C# 读取xml简单问题
XML文档的格式如下
<IPInfo Name="All">
<IP Name="192.168.1.180">
<TempID Name="Temper">
<ID Name="A0" Relay="-1">28-A4-64-03-03-00-00-FC</ID>
</TempID>
</IP>
<IP Name="192.168.1.181">
<TempID Name="Temper">
<ID Name="A0" Relay="-1">28-A4-64-03-03-00-00-FA</ID>
</TempID>
</IP>
</IPInfo>
这个是读取XML的函数
public static ArrayList GetTemInIP(string IP)
{
ArrayList arr = new ArrayList();
XmlDocument doc = new XmlDocument();
doc.Load(Form1.XmlUrl);//这个是路径
XmlNodeList TemID = doc.SelectNodes("/IPInfo/IP[@Name='" + IP + "']");
XmlNodeList list=null;
list = TemID[0].SelectNodes("/IPInfo/IP/TempID/ID");
foreach (XmlNode node in list)
{
string[] Temp = new string[3];
Temp[0] = node.InnerXml;
Temp[1] = node.Attributes["Name"].Value;
Temp[2] = node.Attributes["Relay"].Value;
arr.Add(Temp);
}
return arr;
}
假如我传进的ip是192.168.1.180,我是想读取的是192.168.1.180下的数据,就是这个了<ID Name="A0" Relay="-1">28-A4-64-03-03-00-00-FC</ID>
但 读取的时候也把IP等于192.168.1.181的数据<ID Name="A0" Relay="-1">28-A4-64-03-03-00-00-FA</ID>
也读取出来了。
希望知道的朋友说一下哪里错了。谢谢了
[解决办法]
list = TemID[0].SelectNodes("/IPInfo/IP/TempID/ID");
估计是这句出问题了吧
xpath有相对路径和绝对路径。。你这是个绝对路径,也就是说仍旧 是相对于整个 xmldom的
list = TemID[0].SelectNodes("TempID/ID");
这样看看