比如有一个xml文档如下Students.xml:
<?xml version="1.0" encoding="utf-8"?>
<Students>
<Student>
<sno>95001</sno>
<sname>李勇</sname>
<ssex>M</ssex>
<sage>22</sage>
<sdept>CS</sdept>
</Student>
<Student>
<sno>95002</sno>
<sname>刘晨</sname>
<ssex>F</ssex>
<sage>19</sage>
<sdept>IS</sdept>
</Student>
<Student>
<sno>95003</sno>
<sname>王敏</sname>
<ssex>F</ssex>
<sage>18</sage>
<sdept>MA</sdept>
</Student>
<Student>
<sno>95004</sno>
<sname>张立</sname>
<ssex>M</ssex>
<sage>19</sage>
<sdept>IS</sdept>
</Student>
<Student>
<sno>95005</sno>
<sname>李寻欢</sname>
<ssex>M</ssex>
<sage>23</sage>
<sdept>CS</sdept>
</Student>
</Students>
现假设有一个函数ModifyXmlNode(int studentid,int age)用来修改指定节点下的年龄,首先我要找到这个节点:
XmlElement root = xdoc.DocumentElement;
XmlNode mCurrentNode = root.SelectSingleNode("Student[sno=studentid]");
然而,通过调试发现,是无法找到指定sno的这个节点,估计是这个查询的语句里的等号部分有问题,应该如何写了?使用语言是C#。
<?xml version="1.0" encoding="utf-8"?>
<Students>
<Student>
<sno>95001</sno>
<sname>李勇</sname>
<ssex>M</ssex>
<sage>22</sage>
<sdept>CS</sdept>
</Student>
<Student>
<sno>95002</sno>
<sname>刘晨</sname>
<ssex>F</ssex>
<sage>19</sage>
<sdept>IS</sdept>
</Student>
<Student>
<sno>95003</sno>
<sname>王敏</sname>
<ssex>F</ssex>
<sage>18</sage>
<sdept>MA</sdept>
</Student>
<Student>
<sno>95004</sno>
<sname>张立</sname>
<ssex>M</ssex>
<sage>19</sage>
<sdept>IS</sdept>
</Student>
<Student>
<sno>95005</sno>
<sname>李寻欢</sname>
<ssex>M</ssex>
<sage>23</sage>
<sdept>CS</sdept>
</Student>
</Students>
现假设有一个函数ModifyXmlNode(int studentid,int age)用来修改指定节点下的年龄,首先我要找到这个节点:
XmlElement root = xdoc.DocumentElement;
XmlNode mCurrentNode = root.SelectSingleNode("Student[sno=studentid]");
然而,通过调试发现,是无法找到指定sno的这个节点,估计是这个查询的语句里的等号部分有问题,应该如何写了?使用语言是C#。
//完全是现学现用,自己转成函数吧
//using System.Xml;
//using System.IO;
static void Main()
{
XmlDocument xmld = new XmlDocument();
xmld.Load(Directory.GetCurrentDirectory() + "/XMLFile1.xml");
XmlNode node = xmld.SelectSingleNode("/Students/Student[sno='95001']/sage");
node.InnerText = "xxx";
xmld.Save(Directory.GetCurrentDirectory() + "/XMLFile1.xml");
}
xmlDoc.Load(Server.MapPath("a.xml") );
XmlNodeList nodeList=xmlDoc.SelectSingleNode("").ChildNodes;
foreach(XmlNode xn in nodeList)
{
XmlElement xe=(XmlElement)xn;
XmlNodeList nls=xe.ChildNodes;
foreach(XmlNode xn1 in nls)
{
XmlElement xe2=(XmlElement)xn1;
if(xe2.Name=="")
{
xe2.InnerText="";
}
}
}
xmlDoc.Save( Server.MapPath("a.xml") );
5楼的方法在oracle中能否通过,我需要去测一下!
谢谢提供思路!
XmlDocument xmld = new XmlDocument();
xmld.Load(Directory.GetCurrentDirectory() + "/XMLFile1.xml");
XmlNode node = xmld.SelectSingleNode("/Students/Student[sno='"+studentid.ToString()+"']/sage");
node.InnerText = age.ToString();
xmld.Save(Directory.GetCurrentDirectory() + "/XMLFile1.xml");
}
datadoc.DataSet.ReadXml(sRead);//将读取的字节流存到DataSet里面去
datadoc.DataSet.Tables[0].DefaultView.RowFilter = "pro_id="+pro_id;我这个是查询某个id的