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>");
}
foreach(XmlNode n in nodes)
{
Response.Write(n.SelectSingleNode("Key").InnerText + ","+n.SelectSingleNode("@SubKey").Value+".["+ n.SelectSingleNode("Value").InnerText+"]" +"<br>");
}
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>");
}
<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
就是说怎么样取得子节点的Name?
节点应该有一个属性来代表啊,名称一般是"Name"、"ID",如果没有或不知道,哪怎么可以访问到啊?也不知道“如果子节点的key(SubKey, Key, Value等)事先未知了”是什么意思?
一个是以上格式,一个是如下格式:
<item SubKey1="a">
<Key1>1</Key1>
<Value1>xxxx1</Value1>
</item>
<item SubKey1="b">
<Key1>1</Key1>
<Value1>xxxx2</Value1>
</item>
但我想用同一套逻辑来实现..
而且我给的那个XML是结果值啊。也就是说你可以重新定义FLWR语句得到其它格式的XML结果。