2013-05-15 2 views
-3

Я пытаюсь получить идентификатор атрибута, используя имя элемента. не в состоянии это сделать.Получить идентификатор атрибута, используя имя элемента

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

Пример: когда мы передаем значение Hello ему необходимо предоставить атрибут ID, как 002

Любой, пожалуйста, помогите мне решить эту

Заранее спасибо

+3

Можете ли вы представить и пример, и или пример кода, что вы в настоящее время работают with..it очень трудно определить, что вы говорите на основе этого вопроса, когда вы говорите, передать значение 'Hello', что делать вы имеете в виду, как вы его передаете? покажите свой код – MethodMan

+1

Если 'Hello' return' 001' ?? –

+0

Можете ли вы показать нам пример кода всего, что вы пробовали? –

ответ

1

Что версия .NET framework У вас есть доступ к? Если вы можете использовать Linq to 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; 
Смежные вопросы