2013-05-15 50 views
-3

我试图使用元素名称检索属性ID。无法做到。使用元素名称获取属性ID

<root> 
    <child Id="001">Hello</child> 
</root> 

例如:当我们传递的价值它需要提供的属性ID为002

任何Hello请帮我提前解决这个

感谢

+3

你可以提供和示例和或代码样本你目前的工作与..基于这个问题很难确定你在说什么,当你说通过值'你好'什么做你的意思是以及你如何通过它?同时显示你的代码 – MethodMan

+1

应该'你好'返回'001'吗? –

+0

你能告诉我们一个你尝试过的任何代码吗? –

回答

1

什么版本.NET框架你有权访问?如果您可以使用Linq来XML检索属性名称应该很容易。

XDocument document = XDocument.Load("path to your xml"); 
XElement element = document.Descendants.FirstOrDefault(x => x.Value == "element name"); 
var attribute = element.Attribute("Id"); 

(伪代码,也不能保证它的工作原理完全一样,我没有时间,现在编译这个权利,但是一般的想法)

下面是MSDN

1
Using System.Xml.Linq; 

string xml = @"<root><child Id=""001"">Hello</child></root>"; 
XElement element = XElement.Parse(xml); 
var itemName = element.Descendants().FirstOrDefault(n => n.Value == "Hello") 
    .Attribute("Id").Value; 
一个简单的例子
+0

Where子句似乎不必要,因为FirstOrDefault提供了一个谓词,通过它可以过滤元素的值 –

0

Linq + XPath可以在这里很好地工作。

var xDoc = XDocument.Parse(xml); 
var id = xDoc.XPathSelectElement(String.Format("//*[text()='{0}']", "Hello")) 
       .Attribute("Id").Value;