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

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值