gpt4 book ai didi

c# - 从具有多个命名空间的 XElement 获取元素

转载 作者:行者123 更新时间:2023-12-04 17:00:55 26 4
gpt4 key购买 nike

我正在从 Web 服务响应接收 SOAP,但由于存在多个命名空间,我不确定如何调用它。任何帮助表示赞赏。
这是回应:

<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<getCompaniesResponse xmlns="http://mastercard.com/sd/pc/service" xmlns:ns2="http://mastercard.com/sd/pc2/service">
<company>
<id>123456</id>
<name>Name is here</name>
<issuerName>Issuer name is here</issuerName>
</company>
<errorMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true" />
</getCompaniesResponse>
</S:Body>
</S:Envelope>
我试图从 SOAP 中获取公司元素。这是我迄今为止尝试过的:
        var xe = XElement.Parse(response);
XNamespace ns = "http://mastercard.com/sd/pc2/service";
var obj = (string)xe.Descendants(ns + "company").Single();
Console.WriteLine(obj);
在上面的代码中,我假设我只需要最后一个命名空间,但它返回 null。我还尝试了其他两个具有相同结果的命名空间。

最佳答案

指定第一个命名空间而不是 ns2

var xe = XElement.Parse(response);
XNamespace ns = "http://mastercard.com/sd/pc/service";
var obj = (string)xe.Descendants(ns + "company").Single();
Console.WriteLine(obj);

关于c# - 从具有多个命名空间的 XElement 获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68816603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com