所以,我开始了这个项目,我不知道如何搜索它。
我有这个非常简单的XML文件:
version="1.0" encoding="utf-8" ?>
<AI>
<ai>
<id>1</id>
<name>NAME</name>
...
</ai>
</AI>
我想搜索“name”元素获取结果的“id”元素。我尝试了很多方法,大多数都写了一些古怪的东西......
答案 0 :(得分:0)
我将您的示例扩展为包含更多<ai>
标记,以便结果更清晰。
首先我将xml转换为XElement
。如果您使用的是文件,则可以使用XDocument
来解析整个文件。接下来,我转到<ai>
节点并将其内容提取为匿名类型。然后,当您提取内容时,可以使用简单的LINQ表达式轻松搜索它。在下面的示例中,我将返回id
,其中name
等于"NAME"
:
class Program
{
// A sample xml string.
static string xml = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
<AI>
<ai>
<id>1</id>
<name>NAME</name>
</ai>
<ai>
<id>2</id>
<name>NAME2</name>
</ai>
<ai>
<id>3</id>
<name>NAME3</name>
</ai>
</AI>";
static void Main(string[] args)
{
// Read the string.
XElement xelem = XElement.Parse(xml);
var results = xelem.Descendants("ai") // Get all <ai> nodes.
.Select(x =>
new
{
// Get values from <id> and <name>.
// Use anonymous types to store the results.
id = x.Descendants("id").First().Value,
name = x.Descendants("name").First().Value,
});
// Filter out required result.
var filtered = results.Where(x => x.name == "NAME").First().id;
}
}