2012-11-29 77 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