有一user.txt(utf8)文件中有如下内容
<UserInfo id="1" name="mingming" noteUrl="http://www.xxx.com/userdetail.aspx?userid=1&t=2&s=4" />
<UserInfo id="2" name="mingming2" noteUrl="http://www.xxx.com/userdetail.aspx?userid=2&t=2&s=5" />
...
C# Codestring xmlStr=File.ReadAllText("user.txt",Encoding.UTF8);
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.LoadXml("<xml>"+xmlStr+"</xml>");
//报错,说“=是意外的标记...”,其实是noteUrl属性里面的&特殊字符导致的,这个问题应该如何解决呢?

解决方案 »

  1.   

    XmlDocument d = new XmlDocument();    
    d.LoadXml("<?xml version=\"1.0\" encoding=\"utf-8\"?>..");     
    d.Save("XMLFile1.xml");
    转义字符&amp; & 和 
      

  2.   

     doc.LoadXml("<xml><![CDATA[" + strXml + "]]></xml>");
     XmlNodeList nodes = doc.SelectNodes("//xml");
     foreach (XmlNode node in nodes)
         Console.WriteLine(node.InnerText);但是被<![CDATA[...]]> 的内容不会被作为Xml解析
      

  3.   

    不是"="的问题,是属性里的"&"导致的。如果可以的话,直接Replace掉"&" -> "#",再替换回来就可以了。strXml = strXml.Replace("&", "#");
    XmlDocument doc = new XmlDocument();
    doc.LoadXml("<xml>" + strXml + "</xml>");
    XmlNodeList nodes = doc.SelectNodes("//UserInfo");
    foreach (XmlNode node in nodes)
        Console.WriteLine(node.Attributes["noteUrl"].Value);
    Console.Read();