簡體   English   中英

加載和讀取XML文件的處理指令失敗

[英]Loading and reading XML file fails on its processing instruction

我陷入了一個微妙的問題。 我嘗試構建一個C#4.0控制台應用程序來讀取XML文件。

XML文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml:stylesheet type='text/xsl' href='report.xsl' version='1.0'?>
...
<logs>
...
</logs>

這是我的代碼:

...
var root = XDocument.Load(xmlStream);

IEnumerable<XElement> address =
    from el in root.Descendants("formated-text")
    select el;
...

這在Load方法中給出了以下錯誤:

':'字符,十六進制值0x3A,不能包含在名稱中。 第2行,第6位。

將第二行的冒號更改為' - '可以解決錯誤... duh

我可以在我的代碼中做什么來讀取源XML而不必先替換'stupid'冒號?

謝謝!

它看起來像你只是有一個無效的XML文檔。 結腸應該是連字符(根據W3C )。 我懷疑你是否能夠使LINQ to XML解析一個無效的文檔 - 你不應該嘗試。 您應該修改文檔。

冒號錯了,你應該使用破折號

http://www.w3.org/Style/styling-XML.en.html

沒有。 那個“愚蠢的冒號”在那個位置根本無效。

您的XSL-Stylesheet元素不正確。

它應該是:

<?xml-stylesheet type='text/xsl' href='report.xsl' version='1.0'?>

嘗試針對任意數量的在線驗證器驗證您的XML。

您可以嘗試將XML作為字符串加載並使用字符串解析修復此問題,或者您可以逐行讀取原始文件並修復xml:stylsheet的任何出現,然后將其保存為此示例中的文本文件,但它將是更好地讓任何人創建XML以在源頭修復它。

我發現這些“格式錯誤”的XML文件的起源可以追溯到1990年代中期......是的,今天這樣一個舊系統仍然在使用,仍然會產生這種輸出。 我可以在代碼中使用解決方法。

感謝您花時間為這些XML元素提供了一些有用的線索。

我需要確認源XML的創建者在冒號時出錯了。

我已經實施了一個計划B,直到我能說服一個非常大的部門(不是我的部門)來改變他們的申請......:o(

計划B是首先讀取XML文件並替換所有'xml:'出現。 然后將此更正的文件提供給我的流程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM