C# xdocument子节点节点vs节点
我试图理解扩展方法、后代SNNodes和类XDocument的方法“Nodes”之间的区别 我可以看到,子代节点应该返回此文档或元素的所有子代 和节点应返回此文档或元素的所有子节点 我不明白“所有子节点”和“所有子节点”之间有什么区别 有人能澄清一下吗C# xdocument子节点节点vs节点,c#,linq,c#-4.0,linq-to-xml,C#,Linq,C# 4.0,Linq To Xml,我试图理解扩展方法、后代SNNodes和类XDocument的方法“Nodes”之间的区别 我可以看到,子代节点应该返回此文档或元素的所有子代 和节点应返回此文档或元素的所有子节点 我不明白“所有子节点”和“所有子节点”之间有什么区别 有人能澄清一下吗 <root><child><grandchild>foo</grandchild></child></root> foo 根节点元素节点有一个子节点,一个子节点元素节点,
<root><child><grandchild>foo</grandchild></child></root>
foo
根节点
元素节点有一个子节点,一个子节点元素节点,但有三个子节点,即子节点
元素节点、孙节点
元素节点和foo
文本节点。子节点将是直接“位于”某个节点(父节点)下方的节点。子体可能是位于同一节点“下方”的节点,但也可能是位于子节点“下方”的多个级别
子节点将是子节点,但子节点并不总是子节点
Eg: <Parent><Child1 /><Child2><AnotherNode /></Child2></Parent>
-Parent
|
--> Child1 (Descendant)
|
--> Child2 (Descendant)
|
--> AnotherNode (Descendant, not child)
例如:
-母公司
|
-->Child1(后代)
|
-->儿童2(后代)
|
-->另一个节点(子节点,非子节点)
使用一个小的代码示例可能更容易可视化:
string someXML = "<Root><Child1>Test</Child1><Child2><GrandChild></GrandChild></Child2></Root>";
var xml = XDocument.Parse(someXML);
Console.WriteLine ("XML:");
Console.WriteLine (xml);
Console.WriteLine ("\nNodes();\n");
foreach (XNode node in xml.Descendants("Root").Nodes())
{
Console.WriteLine ("Child Node:");
Console.WriteLine (node);
Console.WriteLine ("");
}
Console.WriteLine ("DescendantNodes();\n");
foreach (XNode node in xml.Descendants("Root").DescendantNodes())
{
Console.WriteLine ("Descendent Node:");
Console.WriteLine (node);
Console.WriteLine ("");
}
string someXML=“Test”;
var xml=XDocument.Parse(someXML);
Console.WriteLine(“XML:”);
Console.WriteLine(xml);
Console.WriteLine(“\nNodes();\n”);
foreach(xml.subscriptions(“根”).Nodes()中的XNode节点)
{
Console.WriteLine(“子节点:”);
Console.WriteLine(节点);
Console.WriteLine(“”);
}
Console.WriteLine(“后代节点();\n”);
foreach(xml.substands(“根”).substantNodes()中的XNode节点)
{
Console.WriteLine(“子节点:”);
Console.WriteLine(节点);
Console.WriteLine(“”);
}
产生:
XML:
<Root>
<Child1>Test</Child1>
<Child2>
<GrandChild></GrandChild>
</Child2>
</Root>
Nodes();
Child Node:
<Child1>Test</Child1>
Child Node:
<Child2>
<GrandChild></GrandChild>
</Child2>
DescendantNodes();
Descendent Node:
<Child1>Test</Child1>
Descendent Node:
Test
Descendent Node:
<Child2>
<GrandChild></GrandChild>
</Child2>
Descendent Node:
<GrandChild></GrandChild>
XML:
试验
节点();
子节点:
试验
子节点:
后代节点();
子节点:
试验
子节点:
试验
子节点:
子节点: