XmlNodeList nodes  = dom.SelectNodes("//item");
foreach(XmlNode n in nodes)
{
Response.Write(n.SelectSingleNode("Key").InnerText + ","+n.SelectSingleNode("@SubKey").Value+".["+ n.SelectSingleNode("Value").InnerText+"]" +"<br>");
}

解决方案 »

  1.   

    完整的例子
    XmlDocument doc = new XmlDocument();
    doc.LoadXml(@"<root><item SubKey='a'>
    <Key>1</Key>
    <Value>xxxx1</Value>
    </item>
    <item SubKey='b'>
    <Key>1</Key>
    <Value>xxxx2</Value>
    </item>
    <item SubKey='c'>
    <Key>1</Key>
    <Value>xxxx3</Value>
    </item>
    </root>");
    XmlNodeList nodes  = doc.SelectNodes("//item");
    foreach(XmlNode n in nodes)
    {
    Response.Write(n.SelectSingleNode("Key").InnerText + ","+n.SelectSingleNode("@SubKey").Value+".["+ n.SelectSingleNode("Value").InnerText+"]" +"<br>");
    }
      

  2.   

    如果是返回字符串,则如Net_lover所示,如果想返回XML,如下格式:
    <item>
      <key>l</key>
      <subkey>a</subkey>
      <value>xxxx1</value>
    </item>
    <item>
      <key>l</key>
      <subkey>b</subkey>
      <value>xxxx2</value>
    </item>
    <item>
      <key>l</key>
      <subkey>c</subkey>
      <value>xxxx3</value>
    </item>
    则可以使用XQuery,其FLWR语句为:for $i in document("XML文件名")/item
    return
    if ($i/key="l")    ----------------------这里你可以过滤key="l"的条件,也可以不要
    then <item>{$i/key}<subkey>{$i/@subkey}</subkey>{$i/value}</item>最后一行就是把子节点、属性等重新组织成子节点,为属性subkey的值生成一个<subkey>节点。
    具体操作,请参考XQuery
      

  3.   

    多谢了,如果子节点的key(SubKey, Key, Value等)事先未知了,怎么样取得?
    就是说怎么样取得子节点的Name?
      

  4.   

    不明白你说的什么“怎么样取得子节点的Name”是什么意思?
    节点应该有一个属性来代表啊,名称一般是"Name"、"ID",如果没有或不知道,哪怎么可以访问到啊?也不知道“如果子节点的key(SubKey, Key, Value等)事先未知了”是什么意思?
      

  5.   

    就是说我可能会有两个文件:
    一个是以上格式,一个是如下格式:
    <item SubKey1="a">
    <Key1>1</Key1>
    <Value1>xxxx1</Value1>
    </item>
    <item SubKey1="b">
    <Key1>1</Key1>
    <Value1>xxxx2</Value1>
    </item>
    但我想用同一套逻辑来实现..
      

  6.   

    不可能,文件的格式不相同怎么可能使用同一套逻辑呢?肯定要做判断条件的。
    而且我给的那个XML是结果值啊。也就是说你可以重新定义FLWR语句得到其它格式的XML结果。
      

  7.   

    基本格式一样,比如<item>以上的节点是一样的..