2014-09-02 1 views
0

& apos를 XmlDocument 클래스로 대체하지 않으려면 어떻게해야합니까? 엔티티가 '캐릭터? 예를 들어 내가있는 경우 :' .NET XmlDocument 클래스로 엔터티를 피하십시오

string xml = "<a> &apos; </a>"; 

var doc = new XmlDocument(); 
doc.LoadXml(xml); 
string output = doc.OutterXml; 

을 수행 한 후 출력의 값은

"<a>'</a>" 

이다 나는 일부 내용을 변경, 내가 XML을로드해야하기 때문에이를 방지 할 필요가 디지털로 서명하여 서명 된 XML이 동일하게로드되어야합니다.

+4

XML 문서를 변경하고 서명하여 변경 전과 동일하게 만들 수 없습니다. 그것이 변화의 정의입니다. 그래서 ... 그 부분에 대해 좀 더 자세히 설명해 주시겠습니까? '''과'''는 요소 텍스트에서 서로 바꿔야합니다. – Ryan

+0

또한 XDocument 대신'XmlDocument'를 사용하고있는 이유가 있습니까? –

+0

실제로 내가 추가 한 후에 실제로 서명이 XML에 적용되므로 문제가되지 않습니다. 문제는 XML에 원래 '이 포함되어 있고 XmlDocument 객체에로드 된 후 ' – hdkrus

답변

1

특정 요구 사항에 따라 XmlDocument 또는 다른 XML 파서를 사용하여 원본 문서를 구문 분석하지 마십시오.

ORIGINAL_DOCUMENT_HERE과 같이 원본 문서가 있어야하는 자리 표시자를 넣는 것 외에는 XmlDocument 또는 다른 XML 관련 클래스를 사용하여 새 문서를 만듭니다. 그런 다음 새 문서에 대한 결과 XML을 생성 한 후 ORIGINAL_DOCUMENT_HERE을 원래받은 텍스트로 바꾸고 결과에 서명하십시오.

XML을 사용하는 일반적인 방법은 아니지만 특정 사용 사례에 적합해야합니다.

+0

SamuelNeff, 답장을 보내 주셔서 감사합니다.하지만 문제는 .NET Framework를 사용하여 서명을 수행하고 XmlDocument 아래에서 사용하므로 다른 서명 라이브러리도 필요합니다. 그것은 내가 처리하고있는 프로젝트가 XmlDocument 사용법이 오래되고 충분하기 때문에 커다란 문제가됩니다. 그래서 (물론 엔터티를 제외하고) 잘 동작하는 많은 양의 코드를 변경해야 할 것입니다. – hdkrus

+0

@hdkrus, 죄송합니다. 레거시 코드는 항상 재미 있습니다. –

관련 문제