2016-06-30 2 views
1

나는 C#을 사용하고 있습니다.
i를 때라도 XML 파일이 있습니다Xml 불법 문자 필터

<MyXml> 
    <Element>&lt;x&gt; y&lt;/p&gt<Element> 
    <Element>&amp;quot;my qoute&amp;quot;<Element> 
</MyXml> 

어떻게 내가 "필터"모든 잘못된 문자를? (<> "등)
내가 좋아하는 다음과 내 자신의 코드를 작성할 필요가 :?!

myElement.InnerText.Replace("&lt","<"); 

또는 내가 그렇게 할 수있는 또 다른 방법이

감사

+0

당신이 생각하는 이유 :

당신이 할 수없는 경우, 다음 한 가지 가능한 해결 방법은 자식으로 결과 요소를 XML을 포함하기로되어있는 그 요소를 식별 내용을 분석하고 추가하는 것입니다 * 특수 문자의 유효한 XML 표현 * 대신 잘못된 문자입니까? 너 뭐하려고? 이 등장 인물들은 어떻게 거기에서 끝났습니까? XML 또는 HTML 스 니펫에서 HTML 인코딩을 사용 했습니까? 이 파일은 어떻게 생성 되었습니까? 파일이 예상 한 것이 아닌 경우 파일을 생성하는 코드를 수정해야합니다. –

+0

.xml 파일을 만드는 또 다른 응용 프로그램이 있습니다 .i 대신 CSharpBeginner

+0

분명히, 그렇지 않으면 당신은''을 쓸 수 없을 것이다. 'Element'가 스키마에 따라 자식을 포함 할 수 있다면 생성하는 응용 프로그램은 실제 .xml 파일이 아닌 –

답변

1

당신 들에 대한 답변 hould do는 자식 노드를 추가하는 대신 'escaped'XML을 텍스트 인 Element에 잘못 삽입하기 때문에이 XML을 생성하는 모든 것을 수정합니다.

var doc = XDocument.Parse(xml); 

foreach (var element in doc.Descendants("Element")) 
{ 
    var content = XElement.Parse("<root>" + element.Value + "</root>"); 
    element.ReplaceNodes(content.Nodes()); 
}