2012-11-29 2 views
-1

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 파일을 구문 분석하고 정규 표현식을 사용하여 댓글을 필터링 다음은 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

정규 표현식을 사용하는 스트림 판독기는 작은 파일이기 때문에 효과적입니다. – user1816955

+0

@ user1816955 -이 체크 박스를 선택하면 녹색 체크 표시가 나타나면이 대답을 수락해야합니다. – Bobson

관련 문제