XML命名空间----XmlNameSpace管理器和NameTable

如何使用 XmlNamespaceManager 和 NameTable

此示例显示如何从 XmlDocument 选择命名空间特定的 XML 数据。它说明了 XmlNamespaceManager 类的用法。该类封装命名空间的集合,并提供各种命名空间管理任务,如解析命名空间,向集合添加命名空间,或从集合移除命名空间,以及为命名空间提供范围管理。

XmlNameTable 提供 XML 流中字符串名称的管理。它是通过创建原子化字符串对象表来进行管理的。该表为 XML 分析器提供了一种高效的方法,即对 XML 文档中所有重复的元素和属性名使用相同的 String 对象。

该示例使用 XML 路径语言 (XPath) 表达式查询命名空间。有关 XPath 表达式的更多信息,请参阅如何使用 XPath 表达式查询 XML

 
VB XmlNameSpace.aspx

[ 运行示例] | [ 查看源代码]

首先,该示例创建一个 XmlDocument 并将 orders.xml 文件加载到 XmlDocument 中。

// Create a new XmlDocument for the specified source file and load it.

            XmlDocument myXmlDocument = new XmlDocument();

            myXmlDocument.Load("orders.xml");

            
C# VB  

为了获取 yourns1 命名空间的所有项元素,该示例使用下列 XPath 表达式://yourns1:item。该示例还创建一个 XmlNamespaceManager,它包含 XML 文档中的前缀和命名空间。

orders.xml 文档定义两个前缀:http://tempuri.org/myUSorderprocessornamespace 的 myns 和 http://tempuri.org/USvendor1namespace 的 yourns1。该文档还有 http://tempuri.org/myUSordersnamespace 的默认命名空间(空前缀)。

//Create a string containing the XPATH expression to evaluate.

            sExpr = String.Format("//{0}:item", "yourns1");

            //Create an XmlNamespaceManager and add the namespaces for the document.

            XmlNamespaceManager nsmanager = new XmlNamespaceManager(doc.NameTable);

            //Set default namespace--first param is null.

            nsmanager.AddNamespace(String.Empty, "http://tempuri.org/myUSordersnamespace");

            nsmanager.AddNamespace("myns", "http://tempuri.org/myUSorderprocessornamespace");

            nsmanager.AddNamespace("yourns1", "http://tempuri.org/USvendor1namespace");

            nsmanager.AddNamespace("yourns2", "http://tempuri.org/USvendor2namespace");

            
C# VB  

然后,该示例在 XmlDocument 上调用 SelectNodes 方法。在这种情况下,SelectNodes 方法查找带有 yourns1 前缀的所有项节点,该前缀解析为命名空间 http://tempuri.org/USvendor1namespace。

SelectNodes 方法返回一个 XmlNodeList。然后该示例显示此节点列表。

XmlNodeList nodelist = myXmlDocument.SelectNodes(exprString, nsmanager);

            foreach (XmlNode myXmlNode in nodelist)

            {

            DisplayTree(myXmlNode);

            }

            
C# VB  

摘要

  1. XmlNamespaceManager 类解析命名空间,向集合添加命名空间,以及从集合移除命名空间。
  2. 应用程序可使用 XmlNameTable 提高 XML 分析器的性能。

你可能感兴趣的:(namespace)