C#中用XmlDocument对象获取带名命空间XML文件的节点值

来源:互联网 发布:网络gif保存到电脑 编辑:程序博客网 时间:2024/04/29 14:57

xml文件:

 

<?xml version="1.0" encoding="utf-8" ?>
<bookstore xmlns="http://www.abcd.com">
  <book>
    <title lang="eng">Harry Potter</title>
    <price>29.99</price>
  </book>
  <book>
    <title lang="eng">Learning XML</title>
    <price>39.98</price>
  </book>
  <bookstore>
    <title lang="eng">Learning C#</title>
    <price>55.23</price>
  </bookstore>
  <item name="1">第一个item</item>
  <item name="2">
    <item name="1">这个结点(1)</item>
    <item name="2">这个结点(2)</item>
    <book>
      <title lang="cn">Learning C</title>
      <price>60.95</price>
    </book>
  </item>
</bookstore>

 

 

 

cs操作代码:

            XmlDocument xdoc = new XmlDocument();
            xdoc.Load(Server.MapPath("books.xml"));
            XmlNamespaceManager nm = new XmlNamespaceManager(xdoc.NameTable);
            nm.AddNamespace("NM", "http://www.abcd.com");

            XmlNodeList xnl = xdoc.SelectNodes("/NM:bookstore/NM:book", nm);
            string nodeTempStr = "";
            foreach (XmlNode node in xnl)
            {
                nodeTempStr = node.InnerText;
                nodeTempStr = node.SelectSingleNode("NM:title", nm).InnerText;
                nodeTempStr = node.ChildNodes[0].InnerText;
            }
            XmlNodeList xnodel = xdoc.SelectNodes("/NM:bookstore/NM:item[@name='2']/NM:item", nm);
            XmlNodeList xnodel4 = xdoc.SelectNodes("/NM:bookstore/NM:item[.//*[@name='2']]/NM:item", nm);   //   其中.//*表示当前节点下的所有元素
            XmlNode xnode = xdoc.SelectSingleNode("/NM:bookstore/NM:item[@name='2']/NM:item[@name='2']", nm);
            XmlNodeList xnode1 = xdoc.SelectNodes("/NM:bookstore/NM:book[NM:price>31]", nm);  //选取所有 bookstore 元素的 book 元素,且其中的 price 元素的值须大于 31。
            XmlNodeList xnode2 = xdoc.SelectNodes("/NM:bookstore/NM:book[NM:price>31]/NM:title", nm);  //选取所有 bookstore 元素中的 book 元素的 title 元素,且其中的 price 元素的值须大于 31
            XmlNodeList xnode3 = xdoc.SelectNodes("/NM:bookstore/NM:item[@name]", nm);    //选取所有拥有名为 name 的属性的 item 元素
            string attValue = xnode.Attributes["name"].Value;        //先获取节点,然后再取得该节点中的属性值
            string nodeText = xnode.ChildNodes[0].InnerText;

原创粉丝点击