- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的合作伙伴为我提供了一个 SOAP 网络服务,它返回以下格式的 XML:
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:RestControllerwsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="http://xml.apache.org/xml-soap" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<ns1:getInfoResponse>
<return xsi:type="ns2:Map">
<item>
<key xsi:type="xsd:string">l3</key>
<value SOAP-ENC:arrayType="ns2:Map[10]" xsi:type="SOAP-ENC:Array">
<item xsi:type="ns2:Map">
<item>
<key xsi:type="xsd:string">id</key>
<value xsi:type="xsd:string">2815</value>
</item>
<item>
<key xsi:type="xsd:string">date</key>
<value xsi:type="xsd:string">2015-06-10 00:00:14</value>
</item>
<item>
<key xsi:type="xsd:string">Success</key>
<value xsi:type="xsd:string">0</value>
</item>
<item>
<key xsi:type="xsd:string">Failed</key>
<value xsi:type="xsd:string">0</value>
</item>
<item>
<key xsi:type="xsd:string">Cancel</key>
<value xsi:type="xsd:string">4</value>
</item>
<item>
<key xsi:type="xsd:string">Error</key>
<value xsi:type="xsd:string">932</value>
</item>
<item>
<key xsi:type="xsd:string">Active</key>
<value xsi:type="xsd:string">2644</value>
</item>
<item>
<key xsi:type="xsd:string">Total</key>
<value xsi:type="xsd:string">3618</value>
</item>
<item>
<key xsi:type="xsd:string">Summary</key>
<value xsi:type="xsd:string">1864000</value>
</item>
<item>
<key xsi:type="xsd:string">CustomerID</key>
<value xsi:type="xsd:string">4</value>
</item>
</item>
<item xsi:type="ns2:Map">
<item>
<key xsi:type="xsd:string">id</key>
<value xsi:type="xsd:string">2805</value>
</item>
<item>
<key xsi:type="xsd:string">date</key>
<value xsi:type="xsd:string">2015-06-09 00:00:30</value>
</item>
<item>
<key xsi:type="xsd:string">Success</key>
<value xsi:type="xsd:string">0</value>
</item>
<item>
<key xsi:type="xsd:string">Failed</key>
<value xsi:type="xsd:string">0</value>
</item>
<item>
<key xsi:type="xsd:string">Cancel</key>
<value xsi:type="xsd:string">11</value>
</item>
<item>
<key xsi:type="xsd:string">Error</key>
<value xsi:type="xsd:string">1294</value>
</item>
<item>
<key xsi:type="xsd:string">Active</key>
<value xsi:type="xsd:string">7321</value>
</item>
<item>
<key xsi:type="xsd:string">Total</key>
<value xsi:type="xsd:string">3622</value>
</item>
<item>
<key xsi:type="xsd:string">Summary</key>
<value xsi:type="xsd:string">2588000</value>
</item>
<item>
<key xsi:type="xsd:string">CustomerID</key>
<value xsi:type="xsd:string">4</value>
</item>
</item>
</value>
</item>
</return>
</ns1:getInfoResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
这是我从他的网络服务中得到的,我认为它来自 PHP SOAP如您所见,父节点“item”标识一个没有值的项目“key”字符串,其子节点显示其信息,如 id、date、Success、...和它的 child
我尝试在 visual studio 上解析它,但得到错误 xml nodes have the same name。
请帮助我提供解决方案或演示代码,以从 xsi:type="ns2:Map"中的每个子项中获取“l3”的子节点
最佳答案
试试这个
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.IO;
namespace ConsoleApplication33
{
class Program
{
static void Main(string[] args)
{
string input =
"<SOAP-ENV:Envelope SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ns1=\"urn:RestControllerwsdl\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:ns2=\"http://xml.apache.org/xml-soap\" xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" +
"<SOAP-ENV:Body>" +
"<ns1:getInfoResponse>" +
"<return xsi:type=\"ns2:Map\">" +
"<item>" +
"<key xsi:type=\"xsd:string\">l3</key>" +
"<value SOAP-ENC:arrayType=\"ns2:Map[10]\" xsi:type=\"SOAP-ENC:Array\">" +
"<item xsi:type=\"ns2:Map\">" +
"<item>" +
"<key xsi:type=\"xsd:string\">id</key>" +
"<value xsi:type=\"xsd:string\">2815</value>" +
"</item>" +
"<item>" +
"<key xsi:type=\"xsd:string\">date</key>" +
"<value xsi:type=\"xsd:string\">2015-06-10 00:00:14</value>" +
"</item>" +
"<item>" +
"<key xsi:type=\"xsd:string\">Success</key>" +
"<value xsi:type=\"xsd:string\">0</value>" +
"</item>" +
"<item>" +
"<key xsi:type=\"xsd:string\">Failed</key>" +
"<value xsi:type=\"xsd:string\">0</value>" +
"</item>" +
"<item>" +
"<key xsi:type=\"xsd:string\">Cancel</key>" +
"<value xsi:type=\"xsd:string\">4</value>" +
"</item>" +
"<item>" +
"<key xsi:type=\"xsd:string\">Error</key>" +
"<value xsi:type=\"xsd:string\">932</value>" +
"</item>" +
"<item>" +
"<key xsi:type=\"xsd:string\">Active</key>" +
"<value xsi:type=\"xsd:string\">2644</value>" +
"</item>" +
"<item>" +
"<key xsi:type=\"xsd:string\">Total</key>" +
"<value xsi:type=\"xsd:string\">3618</value>" +
"</item>" +
"<item>" +
"<key xsi:type=\"xsd:string\">Summary</key>" +
"<value xsi:type=\"xsd:string\">1864000</value>" +
"</item>" +
"<item>" +
"<key xsi:type=\"xsd:string\">CustomerID</key>" +
"<value xsi:type=\"xsd:string\">4</value>" +
"</item>" +
"</item>" +
"<item xsi:type=\"ns2:Map\">" +
"<item>" +
"<key xsi:type=\"xsd:string\">id</key>" +
"<value xsi:type=\"xsd:string\">2805</value>" +
"</item>" +
"<item>" +
"<key xsi:type=\"xsd:string\">date</key>" +
"<value xsi:type=\"xsd:string\">2015-06-09 00:00:30</value>" +
"</item>" +
"<item>" +
"<key xsi:type=\"xsd:string\">Success</key>" +
"<value xsi:type=\"xsd:string\">0</value>" +
"</item>" +
"<item>" +
"<key xsi:type=\"xsd:string\">Failed</key>" +
"<value xsi:type=\"xsd:string\">0</value>" +
"</item>" +
"<item>" +
"<key xsi:type=\"xsd:string\">Cancel</key>" +
"<value xsi:type=\"xsd:string\">11</value>" +
"</item>" +
"<item>" +
"<key xsi:type=\"xsd:string\">Error</key>" +
"<value xsi:type=\"xsd:string\">1294</value>" +
"</item>" +
"<item>" +
"<key xsi:type=\"xsd:string\">Active</key>" +
"<value xsi:type=\"xsd:string\">7321</value>" +
"</item>" +
"<item>" +
"<key xsi:type=\"xsd:string\">Total</key>" +
"<value xsi:type=\"xsd:string\">3622</value>" +
"</item>" +
"<item>" +
"<key xsi:type=\"xsd:string\">Summary</key>" +
"<value xsi:type=\"xsd:string\">2588000</value>" +
"</item>" +
"<item>" +
"<key xsi:type=\"xsd:string\">CustomerID</key>" +
"<value xsi:type=\"xsd:string\">4</value>" +
"</item>" +
"</item>" +
"</value>" +
"</item>" +
"</return>" +
"</ns1:getInfoResponse>" +
"</SOAP-ENV:Body>" +
"</SOAP-ENV:Envelope>";
XDocument doc = XDocument.Parse(input);
XElement value = doc.Descendants("value").FirstOrDefault();
var items = value.Elements("item")
.Select(x => x.Elements("item").Select(y => new { key = y.Element("key").Value, value = y.Element("value").Value})
.ToList()).ToList();
}
}
}
这是结果图片
关于c# - 解析具有相同父节点和子节点名称的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30746542/
我目前正在寻找一些关于 jQuery 的建议,因为我认为我做错了,即使我得到了我想要的结果。 我想在更改时将输入的值更改为最接近的具有 .milestone 类的输入的值。我想要更改的输入是保持输入,
我已经阅读有关绑定(bind)、调用、申请的文章近一周了,对我来说仍然很复杂。我想我写的这个 jsfiddle 需要它们。然而,我没能做到,因为我仍然很困惑。 我尽力写了一些我上周从遇到这个问题的开发
我有一个项目生成代码。生成时间真的很长,所以我把它分成了多个项目,每个项目产生了整体的 20%。原始 POM 成为“父 POM”,子项依赖于它,仅包含一个单独的 Artifact ID 和一两个更改的
我正在使用局部 View 来创建父 subview 。我最理想的是父 View 上的提交按钮,用于保存子值。 我有以下模型。 public class Course { public int
我刚刚开始学习Rust,并且在理解所有权如何在我的案例中遇到一些麻烦: use std::ops::IndexMut; // =====================================
我是 JavaScript 新手,想了解更多有关它实例化父/子对象的顺序的信息。更具体地说,我想从编译器/浏览器的 Angular 理解以下代码片段。 var parent = { child:
我正在测试 Azure IaaS,并遇到了一个非常基本的问题。我有一个父 VHD 和子 VHD,已使用 csupload 将其作为页面 blob 上传,并且门户中显示图像和磁盘。然后我尝试将 pare
我的应用程序会定期为我坚持使用的对象请求更新 Core Data到网络服务。然后我需要更新我在主要上下文中拥有的对象(默认情况下 AppDelegate 中提供的对象)。编辑对象的不是用户,所以我需要
texT text text text text text 如何直接获取来自.menu ? 里面的 child 不应该采取。
我一直需要影响与其他元素相关的元素,但我的方法有点业余! 即到 // matched item where script is called from LINK 我使用; $(thi
我有两个表: 父子“类别”: id name parent_id 1 Food NULL 2 Pizza 1 3 Pasta
Linux 上的 Python 2.7.6。 我正在使用从父级继承的测试类。父类保存了许多子类共有的许多字段,我需要调用父类的 setUp 方法来初始化这些字段。调用 ParentClass.setU
我有一个处理图像、相册和相册类别的数据库。 一个专辑可以有多个专辑(子专辑),并且只有 1 级深度。 一张专辑仅属于一个专辑类别。 在这里做了一些研究,我相信最合适的数据库模型是这个 album_ca
我有一个关键字表,其中每个关键字都分配有一个 ID,并且是唯一的。我有第二个表,将父关键字的 ID 链接到子关键字的 ID。一个关键字最多可以有大约 800 个 child 或根本没有。 child
我经常使用这个 CSS 选择器 parent>child。我的设计在 Mozilla 和 Opera 中看起来不错。 但在 IE 中,它很糟糕。我知道 > 在 IE 中无法识别,但在 IE 中有什么替
我一直在用一个父对象构建一个系统,它在其中创建各种子对象,每个子对象都需要一个主对象才能运行。现在,到目前为止,我一直在创建 shared_ptr和 Child* ,所以当 Parent 和 所有 C
我从以下两个类中收到序列化兼容性错误。只有父类CommericalCustomer 实现了序列化。当具有如下所示的父/子关系时,使用可序列化接口(interface)的正确方法是什么? public
我正在开发一个程序并学习父/子进程。目前我的子进程是 exit(variable); 在我的 main() 中我有: signal(SIGCHLD, chldHandler); 在我的 main()
考虑以下两个具体类: public class A { protected void foo() { System.out.println("A foo"); bar
所以,我正在尝试建立这样的父/子类关系: class ParentClass where C : ChildClass { public void AddChild(C child)
我是一名优秀的程序员,十分优秀!