XmlDocument加载有特殊字符的xml字符串怎么解决呢?
有一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# Code
string xmlStr=File.ReadAllText("user.txt",Encoding.UTF8);
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.LoadXml("<xml>"+xmlStr+"</xml>");
//报错,说“=是意外的标记...”,其实是noteUrl属性里面的&特殊字符导致的,这个问题应该如何解决呢?
--------------------编程问答-------------------- XmlDocument d = new XmlDocument();
d.LoadXml("<?xml version=\"1.0\" encoding=\"utf-8\"?>..");
d.Save("XMLFile1.xml");
转义字符& & 和 --------------------编程问答--------------------
doc.LoadXml("<xml><![CDATA[" + strXml + "]]></xml>");
XmlNodeList nodes = doc.SelectNodes("//xml");
foreach (XmlNode node in nodes)
Console.WriteLine(node.InnerText);
但是被<![CDATA[...]]> 的内容不会被作为Xml解析。。。 --------------------编程问答-------------------- 嗯,楼上的可以。 --------------------编程问答--------------------
这样啥都没了,我的数据在节点的属性里面呢 --------------------编程问答-------------------- 不是"="的问题,是属性里的"&"导致的。
如果可以的话,直接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();
补充:.NET技术 , ASP.NET