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