Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按属性搜索XML元素(C#)_C#_Xml - Fatal编程技术网

按属性搜索XML元素(C#)

按属性搜索XML元素(C#),c#,xml,C#,Xml,我正在尝试检查XML元素的特定属性,以便避免保存重复的元素条目。XML大致如下所示: <root> <artist name="Coldplay"> <track name="yellow" artist="Coldplay" url="coldplay.com/yellow" playCount="123" /> <track name="fix you" artist="Coldplay" url=

我正在尝试检查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>

但我不知道那是什么,而且,你可能比我更清楚的原因是,我无法“谷歌”一组像那样的特殊字符,而不会得到奇怪的结果。因此,如果有人能为If检查声明提供建议,我将不胜感激!或者是关于特殊字符在C#中使用方式的名称或链接。

这是一个XPath表达式。您可以将它们与c#中的各种XML相关对象一起使用

一般参考:

XPath与LINQ:。

这是一个-但就我个人而言,我会使用LINQ到XML来搜索自己:

XDocument doc = XDocument.Load("test.xml");

var track = doc.Descendants("track")
               .Where(t => (string) t.Attribute("id") == "foo")
               .FirstOrDefault();
(如果需要,请使用
Single
SingleOrDefault
First
等。)

XmlDocument xd = new XmlDocument();
xd.LoadXml( xmlString );

XmlNodeList nodes = xd.SelectNodes( "//root/artist/track[@name='yellow']" );
XDocument doc = XDocument.Load("test.xml");

var track = doc.Descendants("track")
               .Where(t => (string) t.Attribute("id") == "foo")
               .FirstOrDefault();