从xml获取属性

时间:2009-08-29 13:17:11

标签: c# xml

我有一些像这样的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

我能沿着这些方向做些什么吗?我不想要一个布尔条件。另外,在引入LINQ之前,如何使用传统的XML方法完成此操作(我在.NET 3.5上)。

由于

5 个答案:

答案 0 :(得分:3)

您可以执行类似

的操作
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;

HTH

答案 1 :(得分:2)

这是一个小例子,展示了如何做到这一点:

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;
    }
}

答案 2 :(得分:1)

使用“传统”XML方法,您可以执行以下操作:

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

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

安德鲁有正确的方法使用Linq做到这一点。

答案 3 :(得分:0)

使用传统的XML文档,假设您已经拥有所需的操作节点,使用SelectSingleNode或遍历文档,您可以获取id属性的值。

ActionNode.Attributes("id").Value 

答案 4 :(得分:0)

你几乎拥有它,只要'xe'是 XElement 包含你正在寻找的那个“Action”元素是第一个/只有 XElement 中的“Action”元素:

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