我有一个System.Xml.XmlNode
数组,其数据类似于:
[0] = <Node1 xmlns="---">N1Data</Node1>
[1] = <Node2 xmlns="---">N2Data</Node2>
[2] = <Node3 xmlns="---">N3Data</Node3>
使用LINQ,我如何选择Node2的内部数据?这对于XDocument来说似乎微不足道,但我的数据格式是不可协商的,因为它是由外部资源提供的。
提前致谢。
答案 0 :(得分:3)
像这样,也许?
XmlNode[] nodes = ...;
string value = nodes.Single(n => n.LocalName == "Node2").InnerXml;
// or .InnerText, depending on what you need.
答案 1 :(得分:1)
新答案:根据作者的要求,完全改为完全不使用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();