У меня есть ответ XML в API, который выглядит, как показано нижеОбработка узлов, что делает существует при разборе
<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>
Я хочу, чтобы получить значение «GT» в учетной записи ID из 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) Не используйте «строка», как использовать тип вар Строка не любит нулевые значения 2) Дон.. 't использовать значение, которое как дает ошибки, когда null. Вместо этого попробуйте следующее: string accountID = new_doc.Descendants (ns + "field"). Где (field => field.Attribute ("name")! = null). Выберите (x => (string) field.Attribute ("name")). FirstOrDefault(); – jdweng