Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.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
C# 如何在xml中使用getelementid进行搜索_C#_Xml - Fatal编程技术网

C# 如何在xml中使用getelementid进行搜索

C# 如何在xml中使用getelementid进行搜索,c#,xml,C#,Xml,我想使用GetElementId搜索XML 我有一个XML文件,其中的属性与每个元素关联。元素名称可以延迟,但每个元素都有唯一的Id 例如: <root> <secondRoot> <Person UniqueID='A112' Name='Fred'><FeMale>I am Female</FeMale></Person> <Person UniqueID='A111'><Male>I

我想使用GetElementId搜索XML

我有一个XML文件,其中的属性与每个元素关联。元素名称可以延迟,但每个元素都有唯一的Id

例如:

<root>
<secondRoot>
  <Person UniqueID='A112' Name='Fred'><FeMale>I am Female</FeMale></Person>

  <Person UniqueID='A111'><Male>I am male</Male></Person>
  <Person SSN='A222' Name='Tom'/>
  <Customer id='A111'/>
  <Customer id='A222334444'/>
  <Team members='A222334444 A333445555'/>
  <Random/>
</secondRoot>
</root>

我是女性
我是男性
在上面的XML中,我有与几个元素关联的UniqueID属性。我想搜索具有UniqueID属性的元素。即使我尝试使用以下DTD,它仍然是不够的

<!DOCTYPE root [
  <!ELEMENT root ANY> 

  <!ATTLIST Person UniqueID ID #REQUIRED>
  ]>

]>

问题是UniqueID可能出现在多个元素属性列表中。 我需要避免一种情况,即我必须声明DTD中具有UniqueID属性的元素的每一次出现

有人能提出什么建议吗


谢谢

尝试使用LINQ to XML,无需DTD

// XML data
var xml = "<root><secondRoot><Person UniqueID='A112' Name='Fred'><FeMale>I am Female</FeMale></Person><Person UniqueID='A111'><Male>I am male</Male></Person>  <Person SSN='A222' Name='Tom'/>  <Customer id='A111'/>  <Customer id='A222334444'/>  <Team members='A222334444 A333445555'/>  <Random/></secondRoot></root>";

var doc = XDocument.Parse(xml);

// Get all nodes that have UniqueID
var nodes = 
    from element in doc.Descendants()
    where element.Attribute("UniqueID") != null
    select element;
//XML数据
var xml=“我是女性,我是男性”;
var doc=XDocument.Parse(xml);
//获取具有唯一ID的所有节点
变量节点=
来自doc.subjects()中的元素
where element.Attribute(“UniqueID”)!=无效的
选择元素;

节点
列表将包含具有UniqueID属性的所有节点。

“UniqueID可能出现在多个元素中”-然后提供更好的示例。