从xml中挑选属性

时间:2014-10-01 08:12:40

标签: c# .net xml linq

我需要从xml中选择属性。这是xml:

<?xml version="1.0" encoding="utf-8"?>
<Examine>
  <Categories>
    <name text="test"/>
    <name test="test2"/>
    <name text="test3"/>
    <name text="test4"/>
  </Categories>
</Examine>

以下是代码,在以下帖子的帮助下:Cannot implicitly convert type system.colllections.generic

 public class XmlValue
{
    public System.Xml.Linq.XElement Element { get; set; }


    public string Text
    {
        get
        {
            if (Element == null) return null;
            return Element.Value;
        }
    }
}

public class XmlParser
{
    public List<XmlValue> Getxml()
    {
        XDocument xdoc = XDocument.Load(@"D:\Web Utf-8 Converter\Categories.xml");

        var list = xdoc.Descendants("Categories").SelectMany(p => p.Elements("name")).Select(e => new XmlValue {Element = e}).ToList();

        var listing = list.ToList();
        return listing;
    }
}

如何在上面的xml中获得值Test,test2,test3,test4?

1 个答案:

答案 0 :(得分:6)

使用XElement.XAttribute(string)方法获取特定属性,然后您可以将其投射到string或使用.Value属性来获取它的值:

var list = xdoc.Descendants("Categories")
    .SelectMany(p => p.Elements("name"))
    .Select(e => (string)e.Attribute("text"))
    .ToList();