我正在尝试从XML元素中读取值,但我总是得到"序列包含元素"错误。 我已经完成了我的研究,但对我的问题没有任何作用。
我想阅读此XML
中的Ack和Timestamp元素值<DoDirectPaymentResponse xmlns="urn:ebay:api:PayPalAPI">
<Timestamp xmlns="urn:ebay:apis:eBLBaseComponents">2014-09-16T04:41:56Z</Timestamp>
<Ack xmlns="urn:ebay:apis:eBLBaseComponents">Success</Ack>
</DoDirectPaymentResponse>
这是我读取Ack和Timestamp值的代码
String xmlString = @xml;
using (XmlReader reader = XmlReader.Create(new StringReader(xmlString)))
{
XDocument xdoc = XDocument.Load(reader);
var timestamp = xdoc.Descendants("Timestamp").Single();
receipt.Timestamp = timestamp.Value;
var response = xdoc.Descendants("Ack").Single();
receipt.Response = response.Value;
}
请帮我解决这个问题。非常感谢。
答案 0 :(得分:1)
您需要使用正确的XNamespace
来访问命名空间中的元素:
XDocument xdoc = XDocument.Parse(xmlString);
XNamespace ns = "urn:ebay:apis:eBLBaseComponents";
var timestamp = xdoc.Descendants(ns+"Timestamp").Single();
receipt.Timestamp = timestamp.Value;
var response = xdoc.Descendants(ns+"Ack").Single();
receipt.Response = response.Value;
附注:您可以使用XDocument.Parse()
从XML字符串内容加载XML。