如何使用linq获取单节点数据

时间:2013-05-06 11:52:05

标签: c# asp.net xml linq

我有以下xml文件

<categories>
  <category>
    <id>1</id>
    <name>Computer</name>
    <description>Information tech.</description>
    <active>True</active>
  </category>
  <category>
    <id>2</id>
    <name>Cate1</name>
    <description>MMukh</description>
    <active>True</active>
  </category>
</categories>

我需要通过id值指定一个类别数据并将它们存储在文本框中。 请你帮助我好吗。 感谢。

5 个答案:

答案 0 :(得分:2)

您可以使用LINQ to XML之类的

XDocument xDoc = XDocument.Load("test.XML");
var item = xDoc.Descendants("category")
               .FirstOrDefault(r => r.Element("id").Value == "1");
if(item == null)
   return;

string Name = item.Element("name").Value;
string Decription = item.Element("description").Value;
string active = item.Element("active").Value;

您可以根据需要将结果分配给TextBoxes。

答案 1 :(得分:1)

如何使用Linq To Xml并将元素转换为Dictionary<string,string>

var xDoc = XDocument.Parse(xml);
int id=1;

var dict = xDoc.XPathSelectElement("//category[id=" + id + "]")
            .Elements()
            .ToDictionary(e=>e.Name.LocalName , e=>(string)e);

Console.WriteLine(dict["description"]);

答案 2 :(得分:0)

只需在对象中反序列化给定的XML并将LINQ应用于对象。 MSDN

答案 3 :(得分:0)

首先使用XDocument

加载它
XDocument test = XDocument.Load("test.xml");

然后,

    var qry = (from item in test.Descendants("category")
      where item.Element("id").Value == 1
      select new
      {
         Name = (string)test.Element("name").Value
         Description = (string)test.Element("description").Value
         Active = (string)test.Element("active").Value
      }).FirstOrDefault();

这创建了一个匿名类型,您现在可以显示如下数据:

if (qry != null) {
Console.WriteLine(qry.Name);
Console.WriteLine(qry.Description);
Console.WriteLine(qry.Active);
}

答案 4 :(得分:0)

var xml = XDocument.Parse(xmlDataString);

var categoryElement = xml.Root
    .Elements("category")
    .FirstOrDefault(e => (string)e.Element("id") == "1");