> 백엔드 개발 > C++ > XmlDocument와 함께 SelectSingleNode를 사용할 때 네임스페이스 충돌을 어떻게 해결할 수 있습니까?

XmlDocument와 함께 SelectSingleNode를 사용할 때 네임스페이스 충돌을 어떻게 해결할 수 있습니까?

Susan Sarandon
풀어 주다: 2025-01-07 20:56:41
원래의
296명이 탐색했습니다.

How Can I Resolve Namespace Collisions When Using SelectSingleNode with XmlDocument?

XmlDocument

을 사용하여 XML 구문 분석 시 네임스페이스 충돌 탐색

XML 문서는 이름은 동일하지만 출처가 다른 요소를 구별하기 위해 네임스페이스를 사용하는 경우가 많습니다. XmlDocumentSelectSingleNode 메소드를 사용하면 요소 선택이 복잡해질 수 있습니다.

xmlns 네임스페이스를 정의하기 위해 http://schemas.microsoft.com/developer/msbuild/2003 속성을 ​​사용하여 다음 XML 조각을 고려해보세요.

<code class="language-xml"><project defaulttargets="Build" toolsversion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <Compile include="clsWorker.cs"/>
  </ItemGroup>
</project></code>
로그인 후 복사

<Compile> 요소를 검색하려는 순진한 시도:

<code class="language-csharp">XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(xml);
XmlNode node = xmldoc.SelectSingleNode("//Compile");</code>
로그인 후 복사

null을 산출합니다. 이는 XPath 표현식이 네임스페이스를 무시하기 때문입니다. 해결책은 XmlNamespaceManager:

을 사용하는 것입니다.

네임스페이스 XML 내에서 <Compile> 요소를 올바르게 선택하려면 XmlNamespaceManager를 활용하여 네임스페이스를 접두사에 매핑하세요.

<code class="language-csharp">XmlNamespaceManager ns = new XmlNamespaceManager(xmldoc.NameTable);
ns.AddNamespace("msbld", "http://schemas.microsoft.com/developer/msbuild/2003");
XmlNode node = xmldoc.SelectSingleNode("//msbld:Compile", ns);</code>
로그인 후 복사

이제 SelectSingleNode<Compile> 요소를 정확하게 반환하여 해당 속성과 하위 노드에 대한 액세스를 허용합니다. 이 접근 방식은 네임스페이스 충돌을 효과적으로 해결하고 강력한 XML 조작을 가능하게 합니다.

위 내용은 XmlDocument와 함께 SelectSingleNode를 사용할 때 네임스페이스 충돌을 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿