对XML后进行解析构表,修改其中的某个结点值..
原数据内容如下:
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<DSPrp xmlns="http://mmm.org/tdn.xsd">
<prp diffgr:id="tn1" msdata:rowOrder="0" diffgr:hasChanges="modified">
<pid>5</pid>
<pno>10/zzz</pno>
</proposal>
<mbudget diffgr:id="budget" msdata:rowOrder="0" diffgr:hasChanges="inserted">
<pid>8</pid>
<it_no>12</it_no>
<quantity>8</quantity>
<duration>1</duration>
<total_amount>20</total_amount>
<re />
</mbudget>
<org_prp><org_code>22</org_code></org_prp>
</DSPrp>
</diffgr:diffgram>
我现在要修改mbudget的结点,并且在mbudget后面加上一条新的mbudget 记录,
请问应该怎样写,跪求高手指教!
原数据内容如下:
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<DSPrp xmlns="http://mmm.org/tdn.xsd">
<prp diffgr:id="tn1" msdata:rowOrder="0" diffgr:hasChanges="modified">
<pid>5</pid>
<pno>10/zzz</pno>
</proposal>
<mbudget diffgr:id="budget" msdata:rowOrder="0" diffgr:hasChanges="inserted">
<pid>8</pid>
<it_no>12</it_no>
<quantity>8</quantity>
<duration>1</duration>
<total_amount>20</total_amount>
<re />
</mbudget>
<org_prp><org_code>22</org_code></org_prp>
</DSPrp>
</diffgr:diffgram>
我现在要修改mbudget的结点,并且在mbudget后面加上一条新的mbudget 记录,
请问应该怎样写,跪求高手指教!
首先你的文件是错误的
<proposal diffgr:id="tn1" msdata:rowOrder="0" diffgr:hasChanges="modified">
<pid>5 </pid>
<pno>10/zzz </pno>
</proposal>
class Program
{
static void Main(string[] args)
{
XmlTextReader txtReader = new XmlTextReader("..\\..\\Employees.xml");
XmlDocument doc = new XmlDocument();
doc.Load(txtReader);
Console.WriteLine(doc.OuterXml);
Console.WriteLine("=====");
XmlElement element = doc.CreateElement("address");
XmlText text = doc.CreateTextNode("beijing"); XmlNode refNode= doc.DocumentElement.SelectSingleNode("//employee");
XmlNode newNode = doc.CreateNode(XmlNodeType.Element,"country", "dd");
newNode.InnerXml = "country";
newNode.InnerText = "china";
doc.DocumentElement.InsertAfter(newNode, refNode);
Console.WriteLine(doc.OuterXml);
Console.WriteLine("===");
doc.DocumentElement.AppendChild(element);
doc.DocumentElement.LastChild.AppendChild(text);
Console.WriteLine(doc.DocumentElement.OuterXml);
Console.WriteLine("=====");
Console.WriteLine(doc.OuterXml);
Console.WriteLine("====="); XmlNode root = doc.DocumentElement;
root.RemoveChild(root.FirstChild);
Console.WriteLine(root.OuterXml);
Console.WriteLine("==");
root.RemoveChild(root.SelectSingleNode("/employees/employee")); Console.WriteLine(doc.OuterXml);
Console.WriteLine("==="); DateTime dt1 = DateTime.Parse("2008-02-10");
DateTime dt2 = DateTime.Parse("2008-03-20");
TimeSpan span = dt2 - dt1;
string result = span.ToString().Substring(0, 2);
int num = int.Parse(result) / 2;
DateTime dt = dt1.AddDays(num); Console.WriteLine(dt.ToString());
Console.ReadLine();
}
}<?xml version="1.0" encoding="utf-8" ?>
<employees>
<employee id="1">
<name>
<firstName>shi</firstName>
<secondName>wenbin</secondName>
</name>
<age>20</age>
<sex>male</sex>
</employee>
<employee id="2">
<name>
<firstName>zhengyu</firstName>
<secondName>yu</secondName>
</name>
<age>18</age>
<sex>female</sex>
</employee>
</employees>
node = xmldocSource.SelectSingleNode("//diffgr:diffgram/DSPrp/mbudget");提示错误信息:“需要命名空间管理器或 XsltContext。此查询具有前缀、变量或用户定义的函数。”应该怎样提取?
操作数据集不方便多了命名空间这么搞试试
XmlNamespaceManager m = new XmlNamespaceManager(xmldocSource.NameTable);
m.AddNamespace("diffgr", "urn:schemas-microsoft-com:xml-diffgram-v1"); m.AddNamespace("tdn", "http://mmm.org/tdn.xsd");
node = xmldocSource.SelectSingleNode("tdn:DSPrp/diffgr:mbudget", m);