【发布时间】:2011-01-21 06:20:19
【问题描述】:
我对 Linq2XML 完全陌生,因为我编写了很多行代码来执行简单的事情,并且在一个简单的项目中我想尝试一下...
我用了 2 个小时,但我没有做对:(
我真的非常想回到 XmlNode-code-alike
任务:
- 我向 ASMX 服务发送了一个 SOAP 操作,我得到了 XML 格式的响应
- 我将 XML 解析为 XDocument 对象
- 我尝试获取节点列表...错误!问题!
你可以从这个screenshot看到
alt text http://www.balexandre.com/temp/2010-02-26_0038.png
我的 XDocument 有一个名为 TransactionInformationType 的节点,女巫是一个序列,我只想获取所有并检索我需要的唯一 2 个变量(你可以看到代码注释)就在select c;
下面在观看窗口中,您可以看到
doc.Descendants("TransactionInformationType")
什么都不返回,从 Text Visualizer 中 XDocument 的内容来看,它确实存在!
有人愿意解释并帮助我通过这堵巨大的墙吗?
谢谢!
已添加
回答
响应 XML 有
<gettransactionlistResponse xmlns="https://ssl.ditonlinebetalingssystem.dk/remote/payment">
我必须将其用作命名空间!
事实证明,为了检索值,我确实需要也使用 XNamespace,所以最终代码如下所示:
// Parse XML
XDocument doc = XDocument.Parse(strResponse);
XNamespace ns = "https://ssl.ditonlinebetalingssystem.dk/remote/payment";
var trans = from item in doc.Descendants(ns + "TransactionInformationType")
select new TransactionInformationType
{
capturedamount = Convert.ToInt32(item.Element(ns + "capturedamount").Value),
orderid = item.Element(ns + "cardtypeid").Value
};
谢谢大家的帮助!
【问题讨论】:
-
您能否将 XML 的标头发布到您要查找的元素。这里可能存在命名空间问题。
-
完成!将它添加到 pasteBin,因为它很大(即使我只显示 2 个事务):)
标签: c# linq-to-xml