Получение атрибута из xml - PullRequest
       3

Получение атрибута из xml

1 голос
/ 29 августа 2009

У меня есть несколько xml, как это:

<Action id="SignIn" description="nothing to say here" title=hello" />

Используя LINQ to XML, как я могу получить внутреннее значение id? Я не на своей машине разработчика (другой машине без каких-либо вещей разработчика, но так учетных данных), но я не пробовал:

 var x = from a in xe.Elements("Action")
     select a.Attribute("id").Value

Могу ли я что-нибудь сделать в этом направлении? Я не хочу состояния bool. Кроме того, как это сделать с использованием традиционных методов XML до появления LINQ (хотя я нахожусь на .NET 3.5).

Спасибо

Ответы [ 5 ]

3 голосов
/ 29 августа 2009

Вы могли бы сделать что-то вроде

XDocument doc = XDocument.Parse("<Action id=\"SignIn\" description=\"nothing to say here\" title=\"hello\" />");
var x = from a in doc.Elements("Action")
        select a.Attribute("id").Value;

string idValue = x.Single(); //Single() is called for this particular input assuming you IEnumerable has just one entry

С XmlDocument вы можете сделать

XmlDocument doc = new XmlDocument();
doc.LoadXml("<Action id=\"SignIn\" description=\"nothing to say here\" title=\"hello\" />");
var x = doc.SelectSingleNode("Action/@id");
string idValue = x.Value;

НТН

2 голосов
/ 29 августа 2009

Вот небольшой пример, который показывает, как это сделать:

using System;
using System.Xml.Linq;

class Program
{
    static void Main()
    {
        String xml = @"<Action 
                id=""SignIn"" 
                description=""nothing to say here"" 
                title=""hello""/>";

        String id = XElement.Parse(xml)
            .Attribute("id").Value;
    }
}
1 голос
/ 29 августа 2009

Используя «традиционные» методы XML, вы бы сделали что-то такое:

XmlDocument doc = new XmlDocument();
doc.Load("XML string here");

XmlNode node = doc.SelectSingleNode("Action");
string id = node.Attributes["id"].Value

Эндрю имеет правильный способ сделать это с помощью Linq.

0 голосов
/ 29 августа 2009

У вас это в значительной степени есть, если 'xe' - это XElement , который содержит тот, который вы ищете и , элемент "Действие" является первым / единственным " Действие "элемент в XElement :

string x = xe.Element("Action").Attribute("id").Value;

0 голосов
/ 29 августа 2009

Используя традиционный XML-документ, предполагая, что у вас уже есть нужный узел действия, используя SelectSingleNode или обходя документ, вы можете получить значение атрибута id с помощью.

ActionNode.Attributes("id").Value 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...