-1

我有以下 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 值指定的类别数据并将它们存储在文本框中。请你帮助我好吗。谢谢。

4

5 回答 5

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;

您可以根据您的要求将结果分配给您的文本框。

于 2013-05-06T12:02:34.217 回答
1

How about using Linq To Xml and converting the elements to a 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"]);
于 2013-05-06T12:10:00.027 回答
0

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

于 2013-05-06T11:57:44.060 回答
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);
}
于 2013-05-06T12:02:02.353 回答
0
var xml = XDocument.Parse(xmlDataString);

var categoryElement = xml.Root
    .Elements("category")
    .FirstOrDefault(e => (string)e.Element("id") == "1");
于 2013-05-06T12:03:28.077 回答