使用属性从XML Element中提取文本

时间:2010-10-19 23:57:39

标签: c# xml

我有一个像这样的xml文件:

<root>
<image size = "small">www.linktosmallimage.jpg</image>
<image size = "large">www.linktolargeimage.jpg</image>
</root>

我以这种方式提取第一个链接:

foreach (XmlElement x in xmlSource.SelectNodes("/root"))
            {
             string s = x.SelectSingleNode("image").InnerText;
            }

问题是:我如何获得第二个链接? (大图像的链接,因为我是唯一需要的链接)?

提前谢谢。

3 个答案:

答案 0 :(得分:1)

string s;
foreach(XmlElement x in xmlSource.SelectNodes("/root/image"))
{
  s = x.InnerText;
}

如果你总是想要最后一个。
或者你可以这样做:

        XmlNode y = xmlSource.SelectSingleNode("/root/image[@size=\"large\"]");
        string s = y.InnerText;

在这种情况下元素的顺序无关紧要,假设只有一个这样的元素,你将始终得到属性size = large的元素。如果假设认为这是更好的方法。这里有一些好XPath Examples

答案 1 :(得分:1)

如果您不信任该订单,并且您想使用size属性,请执行以下操作:

x.SelectSingleNode("image[@size='large']") 

答案 2 :(得分:0)

x.SelectSingleNode("image[2]")

奇怪的是,XPath数组从1而不是[0]开始。

有关XPath的大量信息:http://www.w3schools.com/xpath/default.asp

顺便说一下,你应该研究一下System.Xml.Linq - 语法比较庞大,但它更强大。