带& lt;来自XML内容的字符
本文关键字:字符 XML 来自 lt | 更新日期: 2023-09-27 18:06:30
我有一个XML文档,其中包含<
字符的数据。
<Tunings>
<Notes>Norm <150 mg/dl</Notes>
</Tunings>
我使用的代码是:
StreamReader objReader = new StreamReader(strFile);
string strData = objReader.ReadToEnd();
XmlDocument doc = new XmlDocument();
// Here I want to strip those characters from "strData"
doc.LoadXml(strData);
给出错误:
名称不能以'1'开头,十六进制值为0x31。
那么是否有一种方法可以在Load调用之前从XML中剥离这些字符?
如果这只发生在<Notes>
部分,我建议修改XML文件的创建,使用CDATA标记包含Notes中的文本,如下所示:
<Notes><![CDATA[Norm <150 mg/dl]]></Notes>
CDATA标签告诉XML解析器不要解析<![CDATA[
和]]>
之间的字符。这允许您在XML中使用一些字符,否则将中断解析。
如果您知道(或有合理的期望)数据中有特殊字符,则可以使用CDATA标记。
尝试在解析时处理特殊字符(没有CDATA)将比简单地在第一时间修复XML的创建更加耗费人力(并且令人沮丧)。另外,"Norm <150 mg/dl"answers"Norm 150 mg/dl"是不同的,这种区别对于需要这些信息的人来说可能很重要。
如注释所述,您没有XML文档。如果您知道这些文档偏离合法XML的唯一方式与示例中一样,则可以通过正则表达式运行该文件,并用&
替换<(?:'d)
。这将找到与数字相邻的<
并对其进行正确编码。