我有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>
我希望获得价值&#39; gt&#39;来自XML的帐户ID,所以我使用XDocument Parse并使用以下代码
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>
没有字段时如何处理。
答案 0 :(得分:1)
如果元素realm.ldap.username
存在,我会开始测试。像这样:
<udf:field></udf:field>
上述代码的简写如下:
string accountID;
XDocument new_doc = XDocument.Parse(responseString_LabURL);
XNamespace ns = "http://ge.com/ri/userdefined";
if (new_doc.Descendants(ns + "field").Any())
{
accountID = new_doc.Descendants(ns + "field").FirstOrDefault(field => field.Attribute("name").Value.Equals("Account ID")).Value;
}
else
{
accountID = null; // or whatever
}