簡體   English   中英

解析 EntityName 時出錯

[英]An error occurred while parsing EntityName

我正在嘗試將 xml 文檔加載到 C# 中的 object XPathDocument 中。 我的 xml 文檔包括這一行:trés dégagée + rade,當解析器到達那里時,它給了我這個錯誤:“解析 EntityName 時發生錯誤”我知道這是字符“é”的正常原因。 有誰知道我怎樣才能避免這個錯誤......我的想法是在 xml 文檔中插入一個實體聲明,然后用實體替換所有特殊字符......但它很長,我不確定它是否有效。 你有其他想法嗎? 更簡單? 非常感謝

正要發布這個,然后服務器就宕機了。 我想我已經從 memory 正確地重寫了它:

我認為問題在於默認情況下XPathDocument使用XmlTextReader來解析所提供文件的內容,而此XmlTextReader使用ExpandEntitiesEntityHandling設置。

換句話說,當您依賴默認設置時, XmlTextReader將驗證輸入 XML 並嘗試解析所有實體。 更好的方法是通過完全控制XmlReaderSettings手動執行此操作(我總是手動執行此操作):

string myXMLFile = "SomeFile.xml";
string fileContent = LoadXML(myXMLFile);

private string LoadXML(string xml)
{
  XPathDocument xDoc;
  XmlReaderSettings xrs = new XmlReaderSettings();
  // The following line does the "magic".
  xrs.CheckCharacters = false;

  using (XmlReader xr = XmlReader.Create(xml, xrs))
  {
    xDoc = new XPathDocument(xr);
  }

  if (xDoc != null)
  {
    XPathNavigator xNav = xDoc.CreateNavigator();
    return xNav.OuterXml;
  }
  else
    // Unable to load file
    return null;
}

通常這是由用於讀取文件的編碼與實際編碼的文件之間的不匹配引起的。

我猜我會說該文件是 UTF-8 編碼的,但您正在使用默認編碼讀取它。

嘗試用更多細節來加強你的問題,以獲得更明確的答案。

暫無
暫無

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

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