一:
string xmlNeiRong=xxx;
XmlDocument doc = new XmlDocument();
doc.Load(/*xmlNeiRong*/) 这里要怎么样写哦?二:
XML结构如下
<?xml version="1.0" encoding="GB2312" ?>
<allproducts version="1.0">
<jiedian>
<product name="id" value="130" />
<product name="mz" value="20" />
<product name="sj" value="19.2" />
<product name="leibie" value="类别1" />
<product name="diqu" value="四川" />
</jiedian>
<jiedian>
<product name="id" value="131" />
<product name="mz" value="25" />
<product name="sj" value="24.2" />
<product name="leibie" value="类别2" />
<product name="diqu" value="四川1" />
</jiedian>
</allproducts>
请问如何通过diqu和leibie和mz这3个的值来获取该节点的id``麻烦给代码``谢谢``
string xmlNeiRong=xxx;
XmlDocument doc = new XmlDocument();
doc.Load(/*xmlNeiRong*/) 这里要怎么样写哦?二:
XML结构如下
<?xml version="1.0" encoding="GB2312" ?>
<allproducts version="1.0">
<jiedian>
<product name="id" value="130" />
<product name="mz" value="20" />
<product name="sj" value="19.2" />
<product name="leibie" value="类别1" />
<product name="diqu" value="四川" />
</jiedian>
<jiedian>
<product name="id" value="131" />
<product name="mz" value="25" />
<product name="sj" value="24.2" />
<product name="leibie" value="类别2" />
<product name="diqu" value="四川1" />
</jiedian>
</allproducts>
请问如何通过diqu和leibie和mz这3个的值来获取该节点的id``麻烦给代码``谢谢``
例如:doc.Load("c:\temp\Test.xml");2.利用xpath进行定位处理;
查找 diqu
XmlNode selectNote = doc.SelectSingleNode("/allproducts/jiedian/product/[@name='diqu'");这个时候你就可以取得product这个Element。然后,你就可以获取其值哈。
第二个似乎只有通过遍历了,查找<jiedian>结点的三个子节点是否匹配了.
2.利用xpath进行定位处理;
查找 diqu
XmlNode selectNote = doc.SelectSingleNode("/allproducts/jiedian/product/[@name='diqu'");这个时候你就可以取得product这个Element。然后,你就可以获取其值哈。
我是要匹配diqu的value等于四川的 该怎么样弄?
doc.Load(Server.MapPath(xmlNeiRong));
XmlNodeList nodelist = doc.SelectSingleNode("jiedian").ChildNodes;
foreach (XmlNode node in nodeList)
{
XmlElement xe = (XmlElement)node;
if (xe.GetAttribute("diqu") == ".."&&xe.GetAttribute("liebie") == ".."&&xe.GetAttribute("mz") == "..")
{
Response.Write(xe.GetAttribute("id").ToString());
}
else
{
Response.Write("not find it");
}
}
"/allproducts/jiedian/product/[@name='diqu' or @name='四川']";难道你不会用
System.Xml.XmlDataDocument的SelectNodes方法????是不是非要写代码不可?
{
bool flag = false;
string mz="";
string diqu="";
string value1="";
string value2="";
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("test.xml"));//根据你的xml文件所在来确定
XmlNodeList list = doc.SelectSingleNode("allproducts").ChildNodes;
foreach (XmlNode node in list)
{
XmlNodeList xlist = node.ChildNodes;
//要比较的名称和值都可以通过变量来传递
if (((XmlElement)xlist.Item(1)).GetAttribute("name") == mz && ((XmlElement)xlist.Item(1)).GetAttribute("value") == value1 && ((XmlElement)xlist.Item(4)).GetAttribute("name") == diqu && ((XmlElement)xlist.Item(4)).GetAttribute("value") == value2)
{
Response.Write(((XmlElement)xlist.Item(0)).GetAttribute("name")+":"+((XmlElement)xlist.Item(0)).GetAttribute("value"));//输出id:id值
flag = true;
}
}
if (flag == false)
Response.Write("not found");
}