【问题标题】:Change the element in the XML Response in RestAPI在 Rest API 中更改 XML 响应中的元素
【发布时间】: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


【解决方案1】:

这种方法对我有用:

var name_element = new_doc.Root.Elements("name").Single();
name_element.Value = "new name";

请注意我在这里使用Root

或者这样试试:

var name_element = new_doc.Descendants("name").Single();
name_element.Value = "new name";

注意,如果序列中没有元素,Single() 会抛出异常!

【讨论】:

    【解决方案2】:

    这可能对你有用

    XDocument xdc = XDocument.Load(YourXMLFile);
    xdc.Descendants("name").FirstOrDefault().Value = "ABCD";
    

    现在您的对象 xdc 已更改。你可以保存它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多