zoukankan      html  css  js  c++  java
  • C# 解析带前缀的Xml节点内容

    一般的xml文件相信大家都会解析了,但是遇到有命名空间的带前缀的xml,对于新手可能会有点问题。我这里在论坛解答的时候就遇到过一题,见怎么获取XML节点里面的内容,在线求教。这里给大家演示一下。

    他的结构是这样子的:

    <?xml version="1.0" encoding="utf-8" ?>  
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.jiangsuedu.net/justone/">  
      <SOAP-ENV:Header>  
        <TransactionID>110000000001</TransactionID>  
        <ServiceType>/sms/mt</ServiceType>  
      </SOAP-ENV:Header>  
      <SOAP-ENV:Body>  
        <GateWayID>YNMC</GateWayID>  
        <DstID>15125664368</DstID>  
        <SrcID>099879</SrcID>  
        <FeeID>15125664368</FeeID>  
        <LinkID/>  
        <MsgContent>哈哈</MsgContent>  
        <ServiceID>AYN3913101</ServiceID>  
        <MsgID>1234</MsgID>  
        <CommitTime>201311130101022</CommitTime>  
      </SOAP-ENV:Body>  
    </SOAP-ENV:Envelope> 
    

    比如我们要取MsgContent节点下的内容,我们直接去取是会报错的。比如:

    XmlDocument doc = new XmlDocument();  
    doc.Load("test.xml");  
    string value = doc.SelectSingleNode("/SOAP-ENV:Envelope/SOAP-ENV:Body/MsgContent").InnerText;  
    

    这里value会发生异常,如图:

    根据错误提示,已经提醒我们需要命名空间管理器。

    XmlDocument doc = new XmlDocument();  
    doc.Load("test.xml");  
      
    XmlElement root = doc.DocumentElement;  
    string nameSpace = root.NamespaceURI;  
    XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); ;  
    nsmgr.AddNamespace("SOAP-ENV", nameSpace);  
      
    string value = doc.SelectSingleNode("/SOAP-ENV:Envelope/SOAP-ENV:Body/MsgContent", nsmgr).InnerText;  
    Console.WriteLine(value);//输出:哈哈  
    

    这时我们加上了XmlNamespaceManage进行处理,成功的获取到了我们想要的内容。

  • 相关阅读:
    函数--第一类对象、闭包、
    递归
    局部变量 和 全局变量
    默认参数,不固定参数 *args,**kwargs
    函数基本语法及特性
    文件修改
    文件操作,重点,日常使用!!!
    集合
    重新写了一边三级菜单,加了一些自己的理解
    三级菜单
  • 原文地址:https://www.cnblogs.com/guwei4037/p/3499341.html
Copyright © 2011-2022 走看看