【发布时间】:2012-11-30 04:10:30
【问题描述】:
如何从 xml 文件中删除包含双破折号 (--) 的无效 xml cmets?
我正在尝试加载 xml 文件,但它失败了。这些 cmets 使 xml 无效。 xml 来自供应商。
我尝试根据其他帖子的方法删除这些,但我没有成功。这是xml的一个例子:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--MAIN VARIABLES-->
<content type="screwed">
<!--KEEP 19-39 -- SEE HELP.TXT AND THE VIDEO TUTORIALS FOR MORE INFO -->
<!--REGULAR/NON-Regular EXAMPLE --><SomeTag somefile="test.txt3" Name="test"/>
<!-- -->
</content>
我尝试了以下方法但没有成功:
string xmlDocFile = "c:\server\test.xml";
XmlReaderSettings readerSettings = new XmlReaderSettings();
readerSettings.IgnoreComments = true;
readerSettings.ProhibitDtd = false;
readerSettings.ValidationType = ValidationType.DTD;
XmlReader reader = XmlReader.Create(xmlDocFile, readerSettings);
XmlDocument myXmlDoc = new XmlDocument();
myXmlDoc.Load(reader);
myXmlDoc.Save(xmlDocFile);
【问题讨论】:
-
正如您指出的那样,这是无效的 XML,因此任何旨在处理 XML 的东西都会遇到困难。如果您可以返回供应商并让他们知道他们的数据不起作用。如果这不是一个选项,您需要将其视为文本文件并使用正则表达式删除 cmets(或所有 cmets)之间的双破折号,然后正常使用 XML。有关如何执行此操作的更多信息,请参阅stackoverflow.com/questions/1304052/…。