2012-11-29 63 views
-1

如何从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); 
+6

正如您指出这是无效的XML,所以设计用于处理XML的任何内容都将很难实现。如果您可以返回供应商并让他们知道他们的数据无法正常工作。如果这不是一个选项,你需要把它看成是一个文本文件,并使用正则表达式去除注释(或所有注释)之间的双破折号,然后像正常一样使用XML。有关如何做到这一点的更多信息,请参阅http://stackoverflow.com/questions/1304052/c-sharp-how-to-delete-xml-html-comments-with-regular-expression。 – JohnLBevan

回答

1

使用XmlReader之前,解析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); 
+0

与正则表达式替换streamreader工作,因为这些都是小文件,它也很有效。 – user1816955

+0

@ user1816955 - 如果此功能适用于您,您应该检查绿色复选标记以接受此答案。 – Bobson