XmlDocument
XML 문서는 이름은 동일하지만 출처가 다른 요소를 구별하기 위해 네임스페이스를 사용하는 경우가 많습니다. XmlDocument
의 SelectSingleNode
메소드를 사용하면 요소 선택이 복잡해질 수 있습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!