获取XML中指定属性的值

<?xml version='1.0' encoding='UTF-8'?>
<Response service="OrderService">
    <Head>OK</Head>
    <Body>
        <OrderResponse filter_result="2" destcode="010" mailno="11111" origincode="021" orderid="778"/>

<OrderResponse filter_result="2" destcode="010" mailno="11111" origincode="021" orderid="778" return_tracking_no="12121"/>
</Body> </Response>

从厂商那里返回的这样的接口,但是正确的是上面标红的Code.

所以我就是要先去判断下代码中是否有return_tracking_no这个属性。

刚开始我是这样写的:

string ret= xNodedetail.Attributes["return_tracking_no"].Value;

但是这样如果没有这个属性,就会直接报错:未将对象实例化之类的错误。

现在更改一种方式:

 var xdoc = new XmlDocument();
     xdoc.LoadXml(xml);
  XmlNode xNodedetail = xdoc.SelectSingleNode("Response/Body/OrderResponse");//取is_success节点的值
  string mailno = xNodedetail.Attributes["mailno"].Value;//
  XmlElement XmlEle = (XmlElement)xNodedetail;//将XmlNode转成XMLElement
  string sssss = XmlEle.GetAttribute("return_tracking_no").Trim();//如果没有这个属性,值是空
 if (string.IsNullOrEmpty(XmlEle.GetAttribute("return_tracking_no").Trim()))
   {
     throw new Exception("" + TRIP_NUMBER + ",没有返回对应的签回单号,请联系顺丰管理员");
   }

 

posted @ 2020-07-28 10:38  ProZkb  阅读(826)  评论(0编辑  收藏  举报