【发布时间】:2017-05-19 11:06:38
【问题描述】:
我正在从我正在创建的 Rest AP 调用第三方 API。第三方 API 总是以 XML 形式返回,看起来像
<prj:prj uri="https://bh.org/api/v2/prj/V51" lid="V51" xmlns:udf="http://ge.com/ri/userdefined" xmlns:ri="http://ge.com/ri" xmlns:file="http://ge.com/ri/file" xmlns:prj="http://ge.com/ri/prj">
<name>fgfgfg</name>
<res uri="https://bh.org/api/v2/res/19"/>
<udf:type name="cis"/>
<udf:field type="String" name="ST">Cli</udf:field>
<udf:field type="String" name="CPN">TestName</udf:field>
<udf:field type="Numeric" name="No">1</udf:field>
<udf:field type="String" name="CA">Do not know</udf:field>
<udf:field type="String" name="Cto">Me</udf:field>
<udf:field type="String" name="Site">GT</udf:field>
</prj:prj>
在这里,我应该将名称从 fgfgfg 更改为 ABCD,并将整个 XML 作为响应发送。我正在尝试下面的代码
var new_Name = "ABCD";
var response_LabURL = client_LabName.GetAsync(clarity_URL).Result;
string responseString_LabURL = response_LabURL.Content.ReadAsStringAsync().Result;
XDocument new_doc = XDocument.Parse(responseString_LabURL);
var name_element = new_doc.Elements("name").Single();
name_element.Value = new_Name;
return Ok(new_doc);
但这会引发类似ExceptionMessage":"Sequence contains no elements","ExceptionType":"System.InvalidOperationException","StackTrace":" at System.Linq.Enumerable.Single[TSource]的错误
【问题讨论】:
-
你应该在 root 上调用
new_doc.Root.Elements("name")。
标签: c# asp.net linq asp.net-web-api xml-parsing