기본 xmlns(namespace)가 정의된 문서 XPath로 읽기

원문

C#에서 XPath로 XML을 쉽게 다룰 수 있는데, Select검색시에 기본 네임스페이스(RootElement에 정의된 xmlns)가 정의되어 있을 경우, ElementName만 가지고서는 검색되지 않는다.

<?xml version="1.0" encoding="utf-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
  <body />
</html>

code

XmlNode metaNode = xmldoc.SelectSingleNode("//Body"); // returns null

다음과 같이 Namespace를 별칭과 함께 사용하여 검색할 수 있다.

XmlNamespaceManager namespaceManager = new XmlNamespaceManager(xmldoc.NameTable);
namespaceManager.AddNamespace("myprefix", "http://www.w3.org/1999/xhtml");

XmlNode metaNode = xmldoc.SelectSingleNode("//myprefix:Body"); // returns body element node