LINQ to XML 获取 XElement 值

2024-03-04

我在从 LINQ to XML 查询获取一些值时遇到问题。我从 SOAP Web 服务获取了 XML,并将其传递并解析为 XDocument 进行查询

The XML:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<GetCollectionByUprnAndDateResponse xmlns=\"http://webservices.whitespacews.com/\">
  <GetCollectionByUprnAndDateResult>
    <ErrorCode>0</ErrorCode>
    <ErrorDescription>Success</ErrorDescription>
    <SuccessFlag>true</SuccessFlag>
    <Collections>
      <Collection>
        <Service>Garden Waste Collection Service</Service>
        <Round>RR3 GDN</Round>
        <Schedule>TueFort2</Schedule>
        <Day>Tuesday</Day>
        <Date>01/04/2014</Date>
      </Collection>
      <Collection>
        <Service>Recycling Collection Service</Service>
        <Round>RR8 REC</Round>
        <Schedule>TueFort2</Schedule>
        <Day>Tuesday</Day>
        <Date>01/04/2014</Date>
      </Collection>
      <Collection>
        <Service>Refuse Collection Service</Service>
        <Round>RR8 REF</Round>
        <Schedule>TueFort1</Schedule>
        <Day>Tuesday</Day>
        <Date>08/04/2014</Date>
      </Collection>
      <Collection>
        <Service>Garden Waste Collection Service</Service>
        <Round>RR3 GDN</Round>
        <Schedule>TueFort2</Schedule>
        <Day>Tuesday</Day>
        <Date>15/04/2014</Date>
      </Collection>
      <Collection>
        <Service>Recycling Collection Service</Service>
        <Round>RR8 REC</Round>
        <Schedule>TueFort2</Schedule>
        <Day>Tuesday</Day>
        <Date>15/04/2014</Date>
      </Collection>
      <Collection>
        <Service>Refuse Collection Service</Service>
        <Round>RR8 REF</Round>
        <Schedule>TueFort1</Schedule>
        <Day>Tuesday</Day>
        <Date>22/04/2014</Date>
      </Collection>
    </Collections>
  </GetCollectionByUprnAndDateResult>
</GetCollectionByUprnAndDateResponse>
</soap:Body>
</soap:Envelope>

CS代码:

using (var reader = new StreamReader(response.GetResponseStream()))
{
   string xmlString = reader.ReadToEnd();
   XDocument xmlDoc = XDocument.Parse(xmlString);
   var collections = (from p in xmlDoc.Descendants()
       where p.Name.LocalName == "Collection"
       select p);

   var test = xmlDoc.Descendants("Collection").Select(
       x => new
       {
           day = x.Element("Day").Value,
           date = x.Element("Date").Value
       });
       Debug.WriteLine("STOP HERE");

   var test2 = (from p in xmlDoc.Descendants()
       where p.Name.LocalName == "Collection"
       select new{
          day = p.Element("Day").Value,
          date = p.Element("Date").Value
       });

}

上面的 collections var 给了我一个节点列表,但是 test 和 test2 var 没有给我子元素。

任何帮助表示赞赏!


这就是让你头疼的原因:

xmlns="http://webservices.whitespacews.com/"

这是为元素及其后代设置默认命名空间 - 因此您需要查找本地名称为Collections和那个命名空间。其他元素也是如此。幸运的是,LINQ to XML 使您可以轻松实现这一点:

XNamespace ns = "http://webservices.whitespacews.com/";
...
var test = xmlDoc.Descendants(ns + "Collection")
                 .Select(x => new
                 {
                     day = x.Element(ns + "Day").Value,
                     date = x.Element(ns + "Date").Value
                 });

我怀疑你的test2收藏would有元素,但是因为它无法找到Day and Date元素,因此获取Value财产将导致NullReferenceException.

另请注意,您无需创建自己的阅读器等。我会将您的代码编写为:

XNamespace ns = "http://webservices.whitespacews.com/";
XDocument doc;
using (var stream = response.GetResponseStream())
{
    doc = XDocument.Load(stream);
}
var query = xmlDoc.Descendants(ns + "Collection")
                  .Select(x => new
                  {
                      Day = x.Element(ns + "Day").Value,
                      Date = x.Element(ns + "Date").Value
                  });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LINQ to XML 获取 XElement 值 的相关文章

  • 无需登录即可在 Intranet 上获取 Web 应用程序的域\用户名

    我的 Intranet 上有一个 Web 应用程序 VS 2005 有几个页面不需要用户登录应用程序 反馈和默认页面 我正在尝试获取要显示和 或发送反馈的域名和用户名 有没有一种方法可以在不需要用户登录的情况下执行此操作 我试过了this
  • C++0x 初始值设定项列表示例

    我想看看这个现有代码示例如何利用 C 0x 初始化列表功能 示例0 include
  • ASMX Web 服务,测试表单仅在本地计算机上适用于一种 WebMethod

    我有一个正在测试的 ASMX WebService 并且在大多数方法上我都可以使用测试表单进行测试 然而 我确实有一种方法 测试表上写着 The test form is only available for requests from t
  • C# 实体框架我们应该使用 POCO.Id 还是仅使用 POCO 设置关系?

    我在服务方法中遇到一种情况 将 POCO 分配为另一个 POCO 的子对象无法按预期工作 我正在使用实体框架 4 public void ChangeOrderCurrency Currency currency order Currenc
  • PartialView Action 正在调用自身

    我有 MVC 应用程序 它用于从主视图 ProductMaster 将 ProductAreaGrid 列表显示为 PartialView 并且它将在局部视图内将 CreateProductArea 作为 PartialView 我的 Gr
  • 多线程 - 比单线程慢

    当我使用多个线程而不是单线程运行程序时 它会变慢 不是应该更快吗 该程序应该遍历从起始目录开始的所有目录 并查找并打印所有名为 X 的文件 代码如下 while done pthread mutex lock lock if list is
  • 从 Golang 调用 C 函数

    我想在 Golang 中编写控制器逻辑并处理 json 和数据库 同时在 C 中使用我的数学处理模型 在我看来 调用 C 函数的开销必须尽可能低 就像设置寄存器 rcx rdx rsi rdi 一样 执行一些操作fastcall 并获取 r
  • 从二进制文件读取字节到 long int

    我有两个问题 我有二进制文件的数据 我想使用 read 函数读取前 8 个字节以签署 long int 但我不能 你知道我该怎么做吗 如何直接读取一块数据到字符串中 我可以像所示那样阅读吗 前任 ifstream is is open te
  • 原子的 C++ 内存屏障

    在这方面我是个新手 谁能提供以下内存屏障之间差异的简化解释 窗户MemoryBarrier 围栏 mm mfence 内联汇编asm volatile memory 内在的 ReadWriteBarrier 如果没有简单的解释 一些好文章或
  • 如何使用 C# 将表格粘贴到 Ms-Word 文档的末尾

    我有一个预制的 Word 模板 其中有一个表格 我想打开它 然后在文档末尾添加 粘贴 另一个表格 问题是它不会转到文档的末尾 而是将新表格粘贴到原始表格的第一个单元格中 任何帮助将不胜感激 previous code copied a ta
  • Code::Blocks 中的调试似乎不起作用 - 缺少调试符号

    我正在尝试在 Code Blocks 中调试程序 我跟着本指南 http wiki codeblocks org index php title Debugging with Code Blocks and 这个短视频 http www y
  • 删除数组时出现访问冲突异常

    删除分配的内存时 出现 访问冲突读取位置 异常 如下所示 我有一个针对 Visual Studio 2010 工具集 v100 C 编译器编译的本机 dll 我有一个针对它的托管 dll 包装器 它是针对工具集 v90 编译的 因为我想以
  • 如何阻止 Control-I 在 CoreWindow 范围内的 UWP 文本框中插入选项卡?

    当我在 UWP 应用程序中有一个 TextBox 时 对我来说 奇怪的行为 在 Windows 10 中创建通用的空白应用程序 UWP 应用程序 使用以下代码将文本框添加到默认网格
  • 如何在 SQLite 中检查数据库是否存在 C#

    我目前正在用 C 编写一个应用程序 并使用 sqlite 作为嵌入式数据库 我的应用程序在启动时创建一个新数据库 但如何让它检查数据库是否存在 如果它确实存在 我如何让它使用它 如果不存在如何创建一个新数据库 这是我到目前为止所拥有的 pr
  • 在 lua 中加载 C++ 模块时出现“尝试索引字符串值”错误

    我正在尝试使用 lua 用 C 编写的函数 下面给出的是cpp文件 extern C include lua h include lauxlib h include lualib h static int add 5 lua State L
  • 检查另一种形式的线程是否仍在运行

    我有一个涉及两个窗体的 Windows 窗体应用程序 子表单用于将数据导出到 CSV 文件 并使用后台工作者写入文件 当这种情况发生时 我隐藏了表格 当后台工作程序运行时 父窗体仍然处于活动状态 因此即使后台工作程序正在写入文件 用户也可以
  • 使用方法的状态模式

    我正在尝试使用方法作为状态而不是类来基于状态模式的修改版本来实现一个简单的状态机 如下所示 private Action
  • Web API 2.0 使用 pascalcase 模型接收驼峰式命名的 JSON 数据

    我正在尝试对我的 Web API 进行 PUT 调用 我在 WebApiConfig cs 中设置了以下内容 以处理以驼峰形式将数据发送回我的 Web 项目 config Formatters JsonFormatter Serialize
  • C# 和断点 - 这里有魔术师吗?

    我有这个 public static void ByLinkText string text for var i 0 i lt 50 i try Setup Driver FindElement By LinkText text Click
  • 有没有办法在 C# 中仅通过文件名查找文件?

    我们现在使用绝对路径或相对路径在 C 应用程序中查找文件 如果文件位于当前工作目录下或 路径 之一下 有没有办法仅通过名称查找文件 使用绝对路径不好 使用相对路径也不够好 因为我们可能通过重命名或移动项目文件夹来更改项目结构 如果我们的代码

随机推荐

  • 重命名 Rails 4 应用程序

    我创建了一个 Rails 4 应用程序 但名称已更改 我已经更新了文件夹名称 但我想知道我需要进入并更新哪些文件才能在整个站点中使用这个新名称 或者是否有 Rails 命令可以快速轻松地完成此操作 https github com mors
  • CSS 转换被 JavaScript 阻止

    我正在尝试在veryJavaScript 的密集期 其中构建并填充了一些相当重的 3d 数组 该加载栏需要保持为空 直到用户单击按钮 发生结冰现象是否我在用着 webkit transition 这个应用程序可以是 chrome 独有的 在
  • 关于 requireEnd Matcher 方法的澄清

    直接来自this http docs oracle com javase 7 docs api java util regex Matcher html requireEnd 28 29java API 公共布尔 requireEnd 如果
  • 如何合并字体?

    我有很多字体 OpenSans bold ttf OpenSans boldItalic ttf OpenSans extrabold ttf OpenSans italic ttf OpenSans light ttf 我将如何继续只创建
  • 在RecyclerView顶部设置进度条并在数据加载后删除

    我想要一个加载图标 显示在 RecyclerView 所在位置的顶部 并在数据加载完成后消失 它看起来像 谁能帮我吗 我的代码显示 RecyclerView 上方有一个 TextView 上面写着 正在加载 并在数据加载后消失 但 Recy
  • 在 cURL PHP 中发送请求时出现 401 未经授权的响应

    我正在尝试使用 GitLab API 解决我的 gitlab 项目问题 我已经尝试过 但它似乎不起作用
  • ms Access 从查询中的文件导入表

    有没有办法让 msAccess DB 查询从文件导入表 是的 只要数据被组织起来 您可以将 VBA 或宏与 TransferText 一起使用 也可以使用菜单或功能区中的 获取外部数据 这将指导您完成这些步骤 EDIT 您可以从 CSV 导
  • NSString 到 NSArray

    我想分割一个NSString进入一个NSArray 例如 给定 NSString myString ABCDEF 我想要一个NSArray like NSArray myArray A B C D E F 如何使用 Objective C
  • GWT为移动设备定制CellList多选模型

    我有一个使用 MultiSelectionModel 的应用程序 它工作得很好 但我需要我正在开发的网站才能在移动设备上工作 所以我无法使用键盘来帮助选择元素 因为它不支持 不存在 例如 在桌面上 我只需按住 ctrl 并单击我想要选择的所
  • SQLAlchemy 提交 pickle 类型

    我在 sqlalchemy 中提交对 pickle 类型 列表 的更改时遇到问题 提交后它将表现得好像什么也没发生一样 这是我尝试提交的功能 def commit move game id player move game game que
  • 管理包:PyCharm vs conda vs pip

    我是 Python 新手 最近在 Windows 10 上安装了 PyCharm 2016 3 我还使用 Anaconda 3 我对包管理不太了解 想更好地了解它 通常我只是使用conda update all但我注意到 通过检查本地 Py
  • Html画布1600x1200屏幕撕裂

    我见过几个关于这个问题的问题 但它们都已经存在了三年多了 通常最后都会说还没有太多解决办法 所以我想知道是否有什么改变 我目前正在开发一款游戏 该游戏使用每秒发生 60 次的间隔在画布上进行绘制 它在我的 iPhone 和 PC 上运行得很
  • Pandas - 保持至少有两个不同代码的组

    我正在使用具有以下结构的 DataFrame import pandas as pd df pd DataFrame group 1 1 1 2 2 2 2 3 3 3 4 4 brand A B X A B C X B C X A B c
  • Symfony2 Crawler - 将 UTF-8 与 XPATH 结合使用

    我正在使用 Symfony2 Crawler Bundle 来使用 XPath 除了编码之外 一切正常 我想使用 UTF 8 编码 但 Crawler 不知何故没有使用它 我注意到因为 nbsp 被转换为 nbsp 这是一个已知问题 UTF
  • 尝试为银行应用程序调用名为 addAccount 的方法,但它一直给出 .class is Expected 错误

    当我尝试调用时 这给了我错误addAccount方法说 class 应该出现在我尝试调用它的行上 我正在尝试做一项作业 我应该创建一个名为的方法addAccount接受两个参数 accountName and accountBalance并
  • 如何在 Microsoft Word 字段中显示下个月?

    我需要在 Word 2003 文档中显示当前月份之后的月份名称 显示当前月份相当容易 DATE MMMM 在撰写本文时 显示 九月 我想要展示的是十月 而我一生都无法弄清楚需要做什么 我一直在尝试遵循以下建议添加余额 http addbal
  • 为什么静态方法不被视为良好的面向对象实践? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在阅读斯卡拉编程 https rads stackoverflow com amzn click com 193435631X 在第 4 章
  • 在 7.3/9/2+ Swift 中,当设备旋转时如何禁用旋转动画?

    这个问题严格来说是关于iOS9 的 假设您有一个普通的现代应用程序 自动布局 故事板 通用 它允许所有四个旋转位置 您希望它以正常方式自动旋转 因此当用户将设备从横向旋转为纵向时 它将更改为新的基于约束的布局 但您只是希望在用户旋转设备期间
  • 通过 VPN 在 Android 上创建 WebAPK 失败

    我的公司 VPN 阻止来自 Android 设备的所有外部流量 我正在尝试测试内部托管的 PWA 防火墙内的所有资源 我观察到 尽管通过了 Lighthouse 审核 但我的 PWA 在设备上的 WebAPK 创建过程中失败了 具体来说 安
  • LINQ to XML 获取 XElement 值

    我在从 LINQ to XML 查询获取一些值时遇到问题 我从 SOAP Web 服务获取了 XML 并将其传递并解析为 XDocument 进行查询 The XML