首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

100分求助关于XML有关问题

2011-12-23 
100分求助关于XML问题现有一个XML文件 aa.xml ,格式如下:?xml version1.0 encodingUTF-8 ?- resu

100分求助关于XML问题
现有一个XML文件 aa.xml ,格式如下:
<?xml version="1.0" encoding="UTF-8" ?> 
- <result>
- <head>
  <flag>Login</flag> 
  <cmd>0</cmd> 
  </head>
- <body>
- <tasks>
- <task>
  <flag>0</flag> 
  <version>20080409</version> 
  <name>站</name> 
- <menuitems>
  <item id="1" pid="0">基本信息</item> 
  <item id="2" pid="0">机房部分</item> 
  <item id="3" pid="0">B部分</item> 
  <item id="4" pid="0">U部分</item> 
  ......................
  ...........很复杂.......

- </task>
- </tasks>
- </body>

- </result>


要把<tasks></tasks>之间的字符取出来,生成一个新的XML,<tasks></tasks>之间的结构是未知的,动态变化的,但<tasks></tasks>这个标记是不变的,请问怎么办啊,谢谢



[解决办法]
doc.Load(@"D:\Project\C#Test\WindowsApplication1\WindowsApplication2\XMLFile3.xml");

XmlNode node = doc.SelectSingleNode("/tasks/*");
[解决办法]
Dim doc As New XmlDocument()
doc.Load("aa.xml")
Dim elemList As XmlNodeList = doc.GetElementsByTagName("task")

Dim i As Integer
For i = 0 To elemList.Count - 1
Console.WriteLine(elemList(i).InnerXml)
Next i



[解决办法]

C# code
            XmlDocument xmlOld = new XmlDocument();            xmlOld.Load(@"C:\XMLFile1.xml");            XmlDocument xmlNew = new XmlDocument();            xmlNew.LoadXml(xmlOld["result"]["body"]["tasks"].InnerXml);            MessageBox.Show(xmlNew.InnerXml);
[解决办法]
xmldocument和xpath查询就可以了
[解决办法]
一个很笨的方法:
1.加载XmlDocument,并导航到Tasks节点
2.定位到XmlDocument对象的根节点,把1中得到节点对象添加进来。
3.删除Doc根节点中除2新添加的节点以外的所有子节点。
4.保存XmlDocument对象到一个文件中。

[解决办法]
1.首先,先把tasks节点查出来
XmlNode node=XmlDoc.SelectSingleNode("//tasks");
2.把节点及其子节点保存到XMLWRITER中,在生成新的XML时,把此WRITER放入合适的位置即可。
XmlTextWriter writer = new XmlTextWriter(Console.Out);
writer.Formatting = Formatting.Indented;
node.WriteContentTo(writer);


[解决办法]
C# code
        #region XMLDocument方法        /// <summary>        /// 给定一个节点的xPath表达式并返回一个节点        /// </summary>        /// <param name="node"></param>        /// <returns></returns>        public XmlNode FindNode(string xPath)        {            XmlNode xmlNode = this.SelectSingleNode(xPath);            return xmlNode;        }        /// <summary>        /// 给定一个节点的xPath表达式返回其值        /// </summary>        /// <param name="xPath"></param>        /// <returns></returns>        public string GetNodeValue(string xPath)        {            XmlNode xmlNode = this.SelectSingleNode(xPath);            return xmlNode.InnerText;        }        public void SetNodeValue(string xPath, string NewValue)        {            XmlNode xmlNode = this.SelectSingleNode(xPath);            xmlNode.InnerText = NewValue;            this.Save(tXMLPath);        }        public void SetNodeListValue(string xPath, ArrayList al)        {            XmlNode xmlNode = this.SelectSingleNode(xPath);            xmlNode.RemoveAll();            this.Save(tXMLPath);            foreach (string fileName in al)            {                XmlElement xesub1 = this.CreateElement("Name");                xesub1.InnerText = fileName;                xmlNode.AppendChild(xesub1);            }            this.Save(tXMLPath);        }        #endregion 


[解决办法]

C# code
XmlDocument doc = new XmlDocument();            doc.Load("c:\\test.xml");            XmlNodeList nodelist = doc.SelectNodes("result/tasks/task");            int i=0;            foreach (XmlNode node in nodelist)            {                XmlDocument tmpdoc = new XmlDocument();                tmpdoc.LoadXml(node.OuterXml);                                XmlDeclaration dec = tmpdoc.CreateXmlDeclaration("1.0", "utf-8", null);                tmpdoc.InsertBefore(dec, tmpdoc.FirstChild);                                tmpdoc.Save("c:\\a" + i++ + ".xml");            } 

热点排行