按属性搜索XML元素(C#)
问题描述:
我正在尝试检查特定属性的XML元素,以便我可以不保存重复的元素条目。在XML看起来或多或少是这样的:按属性搜索XML元素(C#)
<root>
<artist name="Coldplay">
<track name="yellow" artist="Coldplay" url="coldplay.com/yellow" playCount="123" />
<track name="fix you" artist="Coldplay" url="coldplay.com/fixyou" playCount="135" >
</artist>
//ect.
</root>
谷歌和不同的搜索结果建议是这样
[@id='foo']
,但我不知道是什么那是和这可能是更明显的原因对你比对我来说我不能“谷歌”这样的特殊字符的集合没有得到奇怪的结果。所以,如果任何人都可以提供一个如果检查声明的建议,我会非常感激!或C#中特殊字符的名称或链接。
答
这是一个XPath expression - 但就个人而言,我会使用LINQ到XML的搜索自己:
XDocument doc = XDocument.Load("test.xml");
var track = doc.Descendants("track")
.Where(t => (string) t.Attribute("id") == "foo")
.FirstOrDefault();
(使用Single
,SingleOrDefault
,First
等,如果你想。)
答
这是一个XPath表达式。您可以在c#中使用它们以及各种与XML相关的对象。
XmlDocument xd = new XmlDocument();
xd.LoadXml(xmlString);
XmlNodeList nodes = xd.SelectNodes("//root/artist/track[@name='yellow']");
一般参考:http://msdn.microsoft.com/en-us/library/ms256086.aspx
的XPath使用LINQ:http://msdn.microsoft.com/en-us/library/bb675183.aspx。
工作太棒了! !非常感谢! – 2012-01-01 03:37:40