【问题标题】:MVC Parse XML from Web ServiceMVC 从 Web 服务解析 XML
【发布时间】:2014-06-18 12:57:36
【问题描述】:

我正在尝试解析来自 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>

我做错了什么,请帮忙。

【问题讨论】:

  • GetDetails()方法返回的数据类型是什么?
  • 结果的类型是什么?完整的异常细节是什么?另外,这真的是你的xml吗?因为它出现在您的问题中,它不是 xml 。
  • 我的 Web 服务使用 [WebMethod] public XmlDocument GetDetails(string systemId, string appId),所以我应该返回一个 XML 文档。

标签: c# xml web-services asp.net-mvc-4


【解决方案1】:

如果您按 F12 XElement.Parse 可以看到它只有两个单独的方法签名,其中预期的第一个参数是一个字符串。我猜 service.GetDetails 不返回字符串。

如果您在 ViewBag.Surname 分配的末尾抛出一个 .ToString() ,至少应该让您摆脱编译错误。这是否真的为您提供了您期望的数据,很难说。

【讨论】:

    【解决方案2】:

    正如错误消息建议的那样,XElement.Parse() 期望 string 作为参数(而不是您当前传递的 XmlDocument)。

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

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

    【讨论】:

    • 谢谢你,解决了那个错误,现在我有了一个新的'object' does not contain a definition for 'Single' 我只想返回姓氏,你能看看我的 XML 输出并确定我的错误在哪里吗?
    • 我在这里没有收到这样的错误。但我注意到一件事,姓氏是一个节点/元素而不是属性。
    • 我已根据您的建议修改了代码,现在我收到错误 'object' does not contain a definition for 'Single' 任何想法?
    • 奇怪,不知道。 XElement.Descendants() 永远不应该返回 object, it returns IEnumerable&lt;XElement&gt;
    猜你喜欢
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 2015-12-19
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多