获取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 + ",没有返回对应的签回单号,请联系顺丰管理员"); }
人各有命,上天注定,有人天生为王,有人落草为寇。脚下的路,如果不是你自己的选择,那么旅程的终点在哪,也没人知道。你会走到哪,会遇到谁,都不一定。