XmlDocument加载有特殊字符的xml字符串怎么解决呢?

sanjer 2011-01-12 09:25:13
有一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属性里面的&特殊字符导致的,这个问题应该如何解决呢?




...全文
556 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
机器人 2011-01-12
  • 打赏
  • 举报
回复
或者考虑用正则表达式取。
机器人 2011-01-12
  • 打赏
  • 举报
回复
不是"="的问题,是属性里的"&"导致的。

如果可以的话,直接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();
sanjer 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fangxinggood 的回复:]
C# code
doc.LoadXml("<xml><![CDATA[" + strXml + "]]></xml>");
XmlNodeList nodes = doc.SelectNodes("//xml");
foreach (XmlNode node in nodes)
Console.WriteLine(node.InnerText);


但是被<![CD……
[/Quote]
这样啥都没了,我的数据在节点的属性里面呢
csdnfan 2011-01-12
  • 打赏
  • 举报
回复
嗯,楼上的可以。
机器人 2011-01-12
  • 打赏
  • 举报
回复
 doc.LoadXml("<xml><![CDATA[" + strXml + "]]></xml>");
XmlNodeList nodes = doc.SelectNodes("//xml");
foreach (XmlNode node in nodes)
Console.WriteLine(node.InnerText);


但是被<![CDATA[...]]> 的内容不会被作为Xml解析。。。
wuyq11 2011-01-12
  • 打赏
  • 举报
回复
XmlDocument d = new XmlDocument();
d.LoadXml("<?xml version=\"1.0\" encoding=\"utf-8\"?>..");
d.Save("XMLFile1.xml");
转义字符& & 和

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧