从Web服务解析XML

本文关键字:XML 服务 Web | 更新日期: 2023-09-27 18:09:04

我正在尝试从web服务解析xml结果,但我得到一个错误{The best overloaded method match for 'System.Xml.Linq.XElement.Parse(string)' has some invalid arguments"}

var service = new RemoteService.RemoteSoapClient("RemoteSoap");
var result = service.GetDetails(systemId, appId);
ViewBag.Surname = XElement.Parse(result).Descendants("Customer").Single().Attribute("Surname").Value;

XML输出

<?xml version="1.0" encoding="UTF-8"?>
-<List>
-<Customer>
<Surname>Spack</Surname>
<Firstname>Bob</Firstname>
</Customer>
</List>

我做错了什么,请帮助。

从Web服务解析XML

如果您使用XElement。解析可以看到它只有两个独立的方法签名,在这两个签名中,预期的第一个参数都是字符串。我猜是服务。GetDetails不返回字符串。

如果你在ViewBag的末尾抛出。tostring()。姓氏分配,至少可以让您摆脱编译错误。这是否能得到你想要的数据,很难说。

如错误信息所示,XElement.Parse()期望string作为参数(而不是当前通过的XmlDocument)。

您可以使用XmlDocument.OuterXml来获得XmlDocument的字符串标记表示:

ViewBag.Surname = XElement.Parse(result.OuterXml)
                          .Descendants("Customer")
                          .Single()
                          .Element("Surname")
                          .Value;