使用XMLDocument对象分析值中嵌入双引号的xml属性
本文关键字:属性 xml 对象 XMLDocument 使用 | 更新日期: 2023-09-27 18:21:10
这是一个web项目。我收到一个来自外部源的部分html字符串。使用XMLDocument解析它可以很好地工作,除非它遇到带有嵌入引号的属性,例如下面的"style"属性。
<span id="someId" style="font-family:"Calibri", Sans-Serif;">Some Text</span>
似乎(但我可能错了)LoadXml()认为Calibri之前的双引号结束了样式属性,而Calibri是另一个"标记"(标记是我在错误消息中得到的术语)。
var xml = new XmlDocument();
xml.LoadXml(<the html string above, properly escaped>); // <--- here is where I get the error message below
"'Calibri' is an unexpected token. Expecting white space. Line 1, position 18."
我可以使用Regex来替换内部引号,但它会相当难看。而且,我很可能最终会这么做!
我想HtmlAgilityPack可能会有所帮助,但我找不到好的文档,我宁愿避免使用文档稀疏的第三方库。
有没有办法让LoadXml()接受它(然后让Attributes集合正确解析它)?我对此没有太大希望,但无论如何我都会把它扔出去。或者我应该使用XmlDocument之外的其他类吗?我愿意使用具有良好文档的第三方图书馆。
该数据无效。用双引号引起来的属性值中不能包含双引号。用单引号引起来的属性的值中不能有单引号。
有效:
<tag attr1="value with 'single' quotes" attr2='value with "double" quotes' />
无效:
<tag attr1="value with "double" quotes" attr2='value with 'single' quotes' />
请注意,无效示例可以通过以下方式生效:
<tag attr1="value with "double" quotes" attr2='value with 'single' quotes' />