现在的位置: 首页 > 综合 > 正文

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

2013年03月08日 ⁄ 综合 ⁄ 共 508字 ⁄ 字号 评论关闭

如何使用 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 分析器的性能。

抱歉!评论已关闭.