<system>
<caption>开票子系统</caption>
<nodes step="1" flag="0">
<control>
<action>keyboard</action>
<key>ENTER</key>
</control>
</nodes>
  </system>
  <system>
<caption>等候提示</caption>
  </system>
  <system>
<caption>操作员登录</caption>
<nodes step="2" flag="0">
<data>
<value>string</value>
</data>
        </nodes>
<nodes step="3" flag="0">
<control>
<action>keyboard</action>
<key>ENTER</key>
</control>
</nodes>
  </system>
  <system>
<caption>系统</caption>
<nodes step="4" flag="0">
<control>
<action>keyboard</action>
<key>ALT_LOCK&gt;fy&lt;ALT_UNLOCK</key>
</control>
</nodes>
<nodes step="5" flag="0">
<control>
<action>keyboard</action>
<key>ALT_LOCK&gt;c&lt;ALT_UNLOCK</key>
</control>
</nodes>
<nodes step="6" flag="0">
<control>
<action>keyboard</action>
<key>LEFT</key>
</control>
</nodes>
<nodes step="7" flag="0">
<control>
<action>keyboard</action>
<key>DOWN</key>
</control>
</nodes>
<nodes step="8" flag="0">
<control>
<action>keyboard</action>
<key>ENTER</key>
</control>
</nodes>
  </system>
怎样区分每个System节点和nodes节点呢?

解决方案 »

  1.   

    用xmlnode的SelectSingleNode去选择响应的节点,然后遍历他
      

  2.   

    Linq2xml:var xdoc = XDocument.Load("路径");
    var nodes = xdoc.Descendants("nodes");
    foreach(var node in nodes)
       Console.WriteLine(node);
      

  3.   

    看XML文档,一定要注意XML是一个单根的树形结构,这样就好理解多了。查询xml中的节点,应该是用xpath,xpath是xml内置的路径查询语言,支持很多种方式的查询
    至于SelectSingleNode,SelectNodes这样的方法不过是.net对dom操作的封装。按照楼主的问题,如果是区分这两种节点的话,很明显的,system节点是根节点
    而node节点则是system的子节点。还是用树形结构去理解的话,则system为树根,node是树枝中的一部分
      

  4.   

    var xdoc = XDocument.Load("路径");
    var nodes = xdoc.Descendants("nodes");
    foreach(var node in nodes)
       Console.WriteLine(node);