我正在尝试检查XML元素的特定属性,以便我可以避免保存重复的元素条目。 XML看起来或多或少像这样:
<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']
但是我不知道是什么,并且由于原因可能对你来说比对我更明显,我不能“谷歌”这样的特殊字符集合而不会得到奇怪的结果。因此,如果任何人都可以提出if if checking声明的建议,我将非常感激!或者在C#中如何使用特殊字符的名称或链接。
答案 0 :(得分:2)
这是一个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
使用LINQ的XPath:http://msdn.microsoft.com/en-us/library/bb675183.aspx。
答案 1 :(得分:1)
那是XPath expression - 但就个人而言,我会使用LINQ to XML进行搜索:
XDocument doc = XDocument.Load("test.xml");
var track = doc.Descendants("track")
.Where(t => (string) t.Attribute("id") == "foo")
.FirstOrDefault();
(如果您愿意,请使用Single
,SingleOrDefault
,First
等。)