【发布时间】:2017-10-04 15:40:10
【问题描述】:
我正在使用亚马逊广告 API,它返回 XML,如以下小提琴所示:http://xopusfiddle.net/27NxH/
我正在寻找亚马逊提供的商品的价值,如果它存在的话。理论上,下面应该返回一个名称为Amount,值为9980的XML节点
string uri = "redacted" + isbn;
string signedUri = helper.Sign(uri);
WebRequest request = HttpWebRequest.Create(signedUri);
WebResponse response = request.GetResponse();
XmlDocument xDoc = new XmlDocument();
xDoc.Load(response.GetResponseStream());
var testvar = xDoc.SelectSingleNode("/ItemLookupResponse/Items/Item/ItemAttributes/ListPrice");
但是,testvar 返回null。当我也尝试返回 XmlNodeList 时也会发生同样的情况。
我检查了确实加载了一个 XML 文档(有),我注意到以下将返回正确的节点 (Amount),其值为 9980:
XmlNode aznPriceNode = xDoc.DocumentElement.ChildNodes.Item(1).ChildNodes.Item(1).ChildNodes.Item(8).ChildNodes.Item(10).ChildNodes.Item(0);
但是,硬编码这样的路径是一个糟糕的想法,并且并不总是有效,因为 XML 文档可能并不总是包含 ListPrice 条目。
为什么 XPath 在这种情况下不起作用?
【问题讨论】:
标签: c# xml amazon-web-services xpath