使用双破折号从XML文件中删除注释 -

时间:2012-11-29 18:57:29

标签: c# xml

如何从xml文件中删除包含双短划线(--)的无效xml注释?

我正在尝试加载xml文件,但它失败了。这些注释使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);

1 个答案:

答案 0 :(得分:1)

在使用XmlReader之前,使用regexp解析xml文件并过滤注释。

// using System.Text.RegularExpressions;
System.IO.StreamReader file= new System.IO.StreamReader(xmlDocFile);
string validXml = Regex.Replace(file.ReadToEnd(),"<!--.*?-->","");

XmlReader reader = XmlReader.Create(validXml);