1
存在我有一个看起来API的XML响应像下面处理节点,同时解析
<lab:lab uri="https://bh03.org/api/lb/3" xmlns:udf="http://ge.com/ri/userdefined" xmlns:ri="http://ge.com/ri" xmlns:lab="http://ge.com/ri/lab">
<name>GTech</name>
<udf:field type="String" name="Account ID">gt</udf:field>
</lab:lab>
我想获得帐户ID的价值“GT”从XML,所以我使用的XDocument解析和使用下面的代码
XDocument new_doc = XDocument.Parse(responseString_LabURL);
XNamespace ns = "http://ge.com/ri/userdefined";
string accountID = new_doc.Descendants(ns + "field").FirstOrDefault(field => field.Attribute("name").Value.Equals("Account ID")).Value;
但有时会出现在XML没有<udf:field type="String" name="Account ID">gt</udf:field>
和可能看起来像下面
<lab:lab uri="https://bh03.org/api/v2/labs/1302" xmlns:udf="http://ge.com/ri/userdefined" xmlns:ri="http://ge.com/ri" xmlns:lab="http://ge.com/ri/lab">
<name>lsd</name>
</lab:lab>
如何处理没有领域。
两点建议1)不要使用“字符串”类型使用VAR串不喜欢空值2)唐。 't使用值为null时给出错误,而是尝试使用:string accountID = new_doc.Descendants(ns +“field”)。其中(field => field.Attribute(“name”)!= null).Select(x =>(string)field.Attribute(“name”))。FirstOrDefault(); – jdweng