【问题标题】:Basic LINQ to XML Question基本 LINQ to XML 问题
【发布时间】:2010-12-29 22:09:54
【问题描述】:

我有一个返回一些 XML 的 .asmx 网络服务。一个 XML 示例如下所示:

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">http://www.mydomain.com/sample.txt</string>

我是 LINQ 的新手,但想熟悉它。我需要获取字符串元素内部的值。但我不确定如何使用 LINQ 来做到这一点。目前,我正在尝试:

string text = GetXmlText();
XDocument xml = XDocument.Parse(text);
string url = xml.Descendants("string").SingleOrDefault().Value;

此代码引发异常。但我不确定我做错了什么。如何使用 LINQ 获取响应值?

谢谢!

【问题讨论】:

  • 首先,不是每个后代都是一个元素;其次,一般使用 FirstOrDefault 而不是 SingleOrDefault。但在本例中,您可以使用 Element() 方法解决问题
  • 你遇到了什么异常?

标签: c# linq


【解决方案1】:

对于这个特殊的用法,你只需要这个,因为你提供的 XML 只包含一个根节点并且你想要它的值。

string url = xml.Root.Value;

如果XML确实更复杂,请详细说明。但是看看string 元素中的xmlns 属性。要处理想要直接引用特定元素或后代的情况,您需要使用 XNamespace 对象。

XNamespace ns = "http://tempuri.org/";
string url = (string)xml.Descendants(ns + "string").FirstOrDefault();

【讨论】:

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