2015-05-13 102 views
0

我有下一個程序用Visual c#打開一個.XML文檔。我無法打開Xml,因爲它有'&',我不知道我可以打開。使用'&'解析entityname時發生錯誤

private void button1_Click(object sender, EventArgs e) 
{ 
    XmlDocument doc; 
    doc = new XmlDocument(); 
    doc.Load("nuevo.xml"); 

    XmlNodeList menus; 
    menus = doc.GetElementsByTagName("menu"); 

    foreach (XmlNode unMenu in menus) 
    { 
     if (unMenu.Attributes["precio"].Value == "50") 
     { 
      //Console.WriteLine(unMenu.Attributes["type"].Value); 
      XPathNavigator navegador = doc.CreateNavigator(); 
      XPathNodeIterator nodos = navegador.Select("/restaurante"); 
      while (nodos.MoveNext()) 
      { 
       Console.WriteLine(nodos.Current.OuterXml); 
       Console.WriteLine(); 
       textBox1.Text = nodos.Current.OuterXml; 
      } 
     }  
    } 
} 
+2

也許你正試圖解析無效的(不完整的)xml。你能展示它的內容嗎? –

+0

是的,就像Andy說的那樣,應該是逃脫 – Nattrass

+0

一個未經轉義的'&'是一種可能性。另一個是有一個實體'&東西;'和相關的DTD沒有被讀取。 –

回答

1

與在XML &替換的&所有出現。

2

如果你得到錯誤

發生了錯誤,而與「&」

解析實體名稱則是「&」的地方在一個XML元素的名稱。這在XML文檔中是不允許的。您無法使用XmlDocument(或XDocument)類打開無效的XML文件。

有幾件事情可以做:

  1. 確保XML文件總是試圖讀取之前有效。然而,這取決於你的情況,可能是不可能的。
  2. 預處理您的XML文件,將「&」替換爲「& amp;」來修復無效內容。您可以手動或在運行時執行此操作。使用HtmlAgilityPack解析無效文件。

就個人而言,我會與1)如果可能或2)否則。

相關問題