正在搜索XML节点数组

本文关键字:节点 数组 XML 搜索 | 更新日期: 2023-09-27 18:30:13

我有一个System.Xml.XmlNode数组,其数据类似于:

[0] = <Node1 xmlns="---">N1Data</Node1>
[1] = <Node2 xmlns="---">N2Data</Node2>
[2] = <Node3 xmlns="---">N3Data</Node3>

使用LINQ,如何选择Node2的内部数据?这对于XDocument来说似乎微不足道,但我的数据格式是不可协商的,因为它是由外部资源提供的。

提前谢谢。

正在搜索XML节点数组

也许是这样?

XmlNode[] nodes = ...;
string value = nodes.Single(n => n.LocalName == "Node2").InnerXml;
// or .InnerText, depending on what you need.

新答案:完全更改为完全不使用XDocument,根据作者的请求:

string[] elementArray = new[]
{
    "<Node1 xmlns='"foo'">Bar</Node1>",
    "<Node2 xmlns='"foo'">Bar</Node2>",
    "<Node3 xmlns='"foo'">Bar</Node3>"
};
var search = "Node2";
string result = elementArray
    .Where(x => x.Split(' ').First().Substring(1) == search)
    .Select(x =>
    {
        int closeBrace = x.IndexOf(">");
        int openBrace = x.IndexOf("<", closeBrace);
        return x.Substring(closeBrace + 1, openBrace - closeBrace - 1);
    })
    .Single();