C# 使用LINQ读取XML
嗨,我正在寻找LINQ查询提取 级别1类型、子类型 四级路径 来自下面的xml示例。我真的在寻找一个LINQ查询,这样我就可以逐步查看结果数据C# 使用LINQ读取XML,c#,linq,C#,Linq,嗨,我正在寻找LINQ查询提取 级别1类型、子类型 四级路径 来自下面的xml示例。我真的在寻找一个LINQ查询,这样我就可以逐步查看结果数据 <?xml version="1.0" encoding="utf-8"?> <Toplevels> <TopLevel> <Level1> <Type>Read this</Type> <Subtype>Read this</S
<?xml version="1.0" encoding="utf-8"?>
<Toplevels>
<TopLevel>
<Level1>
<Type>Read this</Type>
<Subtype>Read this</Subtype>
</Level1>
<Level2>
<Level3>
<Level4>
<L4Node path="read this" />
</Level4>
</Level3>
</Level2>
</TopLevel>
<TopLevel>
<Level1>
<Type>Read this</Type>
<Subtype>Read this</Subtype>
</Level1>
<Level2>
<Level3>
<Level4>
<L4Node path="read this" />
</Level4>
</Level3>
</Level2>
</TopLevel>
<TopLevel>
<Level1>
<Type>Read this</Type>
<Subtype>Read this</Subtype>
</Level1>
<Level2>
<Level3>
<Level4>
<L4Node path="read this" />
</Level4>
</Level3>
</Level2>
</TopLevel>
</Toplevels>
读这个
读这个
读这个
读这个
读这个
读这个
有人能帮忙吗
提前感谢您可以使用此代码获取
类型
,并尝试在尝试其他操作的同时提高编程技能
XDocument doc =XDocument.Load("D:\\tmp.xml");
foreach (XElement element in doc.Element("Toplevels").Elements("TopLevel"))
{
string str = element.Element("Level1").Element("type").Value;
string lvl4 = element.Element("Level1").Element("Level2").Element("Level3").Element("Level4").Element("L4Node").Attribute("path").Value;
}
可以使用
子体
搜索子体节点
// using LINQ
var xdoc = XDocument.Parse(XML);
var subtypes = xdoc.Descendants("Level1").Descendants("Subtype");
Console.WriteLine("LINQ Level1 Subtype");
foreach (var el in subtypes)
{
Console.WriteLine(el.Value);
}
var paths = xdoc.Descendants("Level4").Descendants("L4Node").Attributes("path");
Console.WriteLine("LINQ Level4 Path");
foreach (var el in paths)
{
Console.WriteLine(el.Value);
}
LINQ的另一种选择是使用XPath
// using XPath
var doc = new XmlDocument();
doc.LoadXml(XML);
var subtype2 = doc.SelectNodes("/Toplevels/TopLevel/Level1/Subtype");
Console.WriteLine("XPath Level1 Subtype");
foreach (XmlNode el in subtype2)
{
Console.WriteLine(el.InnerText);
}
// using XPath shorter, less efficient
var subtype3 = doc.SelectNodes("//Level1/Subtype");
Console.WriteLine("XPath Level1 Subtype");
foreach (XmlNode el in subtype3)
{
Console.WriteLine(el.InnerText);
}
我不明白你想做什么。。。但我会尽力帮助您,因为我认为我理解您可以尝试以下方法:var arrayOfNodes=从doc.substands(“Level1”)中的节点选择node.substands(“otherLevels”)<代码>后代,
后代
无处不在…您好,感谢您的回复。。。我希望有类型,子类型和4级路径作为每个顶级记录。这更有意义吗?我如何在同一个foreach循环中访问级别4?@user2744609编写代码确实不是我的职责,但这次我会这么做。请下次自己试一试。如果您有bug,我会帮您修复,但在您有实际操作经验之前,您将永远无法掌握窍门…5分钟。这非常感谢。@user2744609任何timeSlight更改:foreach(doc.element中的XElement元素(“Toplevels”).Elements(“TopLevel”)更改为foreach(doc.subjections中的XElement元素(“Toplevels”).Elements”(“Toplevels”))... 谢谢你的指导,真的很有帮助。我一直在尝试完全不同的东西