【发布时间】:2015-07-16 03:23:55
【问题描述】:
我有一个 XML 文件,其中包含用于不同图像文件大小的多个 URL,我正在尝试将单个 URL 加载到图片框中。我的问题是子节点的命名相似,父节点的命名也相似。例如,我想拉取第一个中型图像(以SL160_.jpg 结尾)。 XML 代码见下文
<Items>
<SmallImage>
<URL>http://ecx.images-amazon.com/images/I/51TAL%2Bn7AqL._SL75_.jpg</URL>
</SmallImage>
<MediumImage>
<URL>http://ecx.images-amazon.com/images/I/51TAL%2Bn7AqL._SL160_.jpg</URL>
</MediumImage>
<LargeImage>
<URL>http://ecx.images-amazon.com/images/I/51TAL%2Bn7AqL.jpg</URL>
</LargeImage>
<MediumImage>
<URL>http://ecx.images-amazon.com/images/I/51TAL%2Bn7AqL._SL162_.jpg</URL>
</MediumImage>
<LargeImage>
<URL>http://ecx.images-amazon.com/images/I/51TAL%2Bn7AqL.jpg</URL>
</LargeImage>
</Items>
我尝试过使用GetElementsByTag,以及尝试调用doc.SelectSingleNode("LargeImage").SelectSingleNode("URL").InnerText 和GetElementByID 之类的名称。所有这些都给了我一个Object set to null reference 异常。
我可以做些什么来指定我想要来自第一个找到的 MediumImage 节点的 url?
【问题讨论】:
-
请发布minimal but complete 示例来说明问题。没有那个我只能猜测,也许:
doc.SelectSingleNode("//MediumImage/URL").InnerText -
您的代码显示
"LargeImage",但问题的最后一句要求MediumImage节点? -
我正在尝试非此即彼,但不小心离开了
LargeImage而不是MediumImage- 我会确保在将来发布一个完整的示例,但我已经尝试过诸如doc.SelectSingleNode("//LargeImage/URL").InnerText和doc.SelectSingleNode("/LargeImage/URL").InnerText和doc.SelectSingleNode("LargeImage/URL").InnerText等。我将在下面尝试 SkyFangs 的答案,我会告诉你情况如何! -
我怀疑你的 XML 有默认命名空间(类似于
xmlns="..."),不是吗? -
是的,我删除了所有多余的部分以获得最小化的 XML 代码,因为原始代码有几百行。