//获取子节点
productname是要查找某个节点的名称
string xpath = "root/park/product[@productname='" + productname + "']";
XmlNode xmlnode1 = doc.SelectSingleNode(xpath);
问题是,如果productname是数字的话,就不能查找出来,如果不是数字的话就行的
productname是要查找某个节点的名称
string xpath = "root/park/product[@productname='" + productname + "']";
XmlNode xmlnode1 = doc.SelectSingleNode(xpath);
问题是,如果productname是数字的话,就不能查找出来,如果不是数字的话就行的
解决方案 »
- 在c#下实现usb端口打印小票,开钱箱?
- 如何遍历一个datatable,然后手动将修改过的记录中相关字段,更新到后数据库表?
- CSC命令 TO XML????
- #if NET3 #if NET2 不明白如何定义
- 请教各位,如何取得Session和Cookie的数据并加到Request请求中?
- c# qq msn 连手
- 高性能和可靠性
- WINFORM DATAGRID 的数据修改事件是哪个?
- 在c#webform中怎样来实现动态的一个控件啊,比如,输入x,y值,控件就在那儿啊
- 怎么更改键盘输入光标的形状?
- 初学者。。。从大量文件中读取出来的同类型的字符串,如何筛选出不同的存入数组?
- 未能加载文件或程序集(急急急)
if (Operation.PageValidate.IsNumber(productname.ToString())) //判断是不是数字
{
xpath = "/root/park/product[@productname=" + productname + "]";
}
else
xpath = "/root/park/product[@productname='" + productname + "']";
XmlNode xmlnode1 = doc.SelectSingleNode(xpath);
这样写还是不行的
<messages>
<aa>
123
</aa>
</messages>
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(stsPath);
XmlNode ndRoot = xmlDoc.SelectSingleNode("//aa");
string strMessage= ndRoot .InnerText.ToString();
这个strMessage就是 123,具体的说明一下,首先你要有个XML文档的路径,就是代码中的stsPath,然后创建Document文档,导入路径,创建节点,用节点的SelectSingleNode方法去获得你需要的值,这里的//是根节点的意思,//aa表示的是根节点下的aa 然后innerText是获得值。
把你的XML贴出来看看
<park code="0000012112" productcount="0" ver="0">
<product displayprice="350.0" getpoint="12" info="最美的时候" price="200.0" productCode="0001" productname="宋城一日游">
<ticket buyNumber="2" showPrice="100.0" ticketCode="1233123" ticketKind="002001" ticketName="正门"ticketType="001001"/>
<ticket buyNumber="1" showPrice="123.0" ticketCode="123" ticketKind="002001" ticketName="1234"ticketType="001001"/>
</product>
<product displayprice="0.0" getpoint="0" info="123" price="0.0" productCode="123" productname="456">
<ticket buyNumber="12" showPrice="88.0" ticketCode="00000111" ticketKind="002001" ticketName="优票"ticketType="001001"/>
<ticket buyNumber="9" showPrice="250.0" ticketCode="001231" ticketKind="002001" ticketName="宋城大剧院" ticketType="001003"/>
</product>
</park></root>
XmlDocument doc = new XmlDocument();
doc.LoadXml(getproduct);
//获取子节点
if (Operation.PageValidate.IsNumber(productname.ToString()))
{
xpath = "//root/park/product[@productname=" + productname + "]";//productname是要查找某个节点的名称
}
else
xpath = "//root/park/product[@productname='" + productname + "']";
XmlNode xmlnode1 = doc.SelectSingleNode(xpath);
if (xmlnode1 != null)
{
foreach (XmlNode n in xmlnode1.ChildNodes)
{
DataRow dr = dt.NewRow();
dr["TicketName"] = n.Attributes["ticketName"].Value.ToString();
dr["BuyNumber"] = n.Attributes["buyNumber"].Value.ToString();
dr["ShowPrice"] = n.Attributes["showPrice"].Value.ToString();
dt.Rows.Add(dr);
}
return dt;
}
else return null;
你跟踪调试下
看看你传进来的productname 是否正确
直接使用XmlDocument doc = new XmlDocument();
doc.LoadXml(getproduct);
XmlNode obj = doc.SelectSingleNode("//root/park/product[@productname='" + productname + "']");
if (obj != null)
{
foreach (XmlNode n in obj.ChildNodes)
{
DataRow dr = dt.NewRow();
dr["TicketName"] = n.Attributes["ticketName"].Value.ToString();
dr["BuyNumber"] = n.Attributes["buyNumber"].Value.ToString();
dr["ShowPrice"] = n.Attributes["showPrice"].Value.ToString();
dt.Rows.Add(dr);
}
return dt;
}
else return null;ps:不知道楼主这种方式用于什么地方,如果是用于数据绑定就有点多余了,可以直接通过绑定XML来实现。