想问一个如何在xml节点中添加父节点的问题,还请大神帮忙解答

想问一个如何在xml节点中添加父节点的问题,还请大神帮忙解答,第1张

使用XmlNode.InsertAfter方法: 主节点.InsertAfter (XmlNode newChild,XmlNode refChild) newChild:要插入的节点, refChild:放置位置之前的子节点。 例如: XmlDocument doc = new XmlDocument() doc.LoadXml("<book genre='novel' ISBN='1-861001-57-5'>" + "<title>Pride And Prejudice</title>" + "</book>") XmlNode root = doc.DocumentElement XmlElement elem = doc.CreateElement("price") elem.InnerText="19.95" root.InsertAfter(elem, root.FirstChild)

引用命名空间:using System.Xml

1.检查所要 *** 作的xml文件是否存在:

System.IO.File.Exists(文件路径及名称)

2.得到xml文件:

(1)在asp.net中可以这样得到:

XmlDocument xmlDoc = new XmlDocument()

//导入xml文档

xmlDoc.Load( Server.MapPath("xmlTesting.xml"))

//导入字符串

//xmlDoc.LoadXml("<bookStore><book id="01" price="3.5元">读者</book></bookStore>")

注:Server.MapPath("xmlTesting.xml")此时的xmlTesting.xml文件必须是在当前的解决方案里;同样可以写成完整的物理路径xmlDoc.Load (@"E:"软件学习"测试"myNoteWeb"xmlTesting.xml")

(2)在windForm中 直接用物理路径得到所要 *** 作的xml文件具体实现方法同上

3.创建xml文件:

XmlDocument xmlDoc = new XmlDocument()//创建xml文档(实例化一个xml)

XmlNode root = xmlDoc.CreateElement("bookStore")//创建根节点

//创建第1个子结点:

XmlNode bookNode = xmlDoc.CreateElement("book")

bookNode.InnerText = "读者"

//为此节点添加属性

法1:

bookPublishNode.SetAttribute("id", "01")

root.AppendChild(bookNode)

法2:

XmlAttribute xmlattribute = tempXmlDoc.CreateAttribute("price")

xmlattribute.Value = "3.5元"

tempRoot .Attributes .Append (xmlattribute )

//创建第2个根节点的子结点:

XmlNode tempBookNode = xmlDoc.CreateElement("tempbook ")

tempBookNode.InnerText ="文摘"

root.AppendChild(tempBookNode)

xmlDoc.AppendChild(root)//将根节点添加到xml文档中

try

{

xmlDoc.save(“bookInfo.xml”)//xml将保存到当前解决方案的目录下

}

catch (Exception ex)

{

MessageBox.Show(ex.Message)//显示错误信息

}

得到的xml文档如下:

<?xml version="1.0" encoding="utf-8" ?>

<bookStore>

<book id ="01" price="3.5元">

读者

</book>

<tempbook id ="02">

文摘

</tempbook >

</bookStore>

4.读取,修改xml信息

tempTesting.xml文件的内容如下:

?<?xml version="1.0" encoding="utf-8"?>

<bookStore>

<book id="01" price="3.5元">

读者

</book>

<book id="02" price="5元">

<bookname>百家讲坛</bookname>

<bookpublish>文学出版社</bookpublish>

</book>

<tempbook id="0000">漫画tempbook>

</bookStore>

(1) 得到xml文件的xml信息

XmlDocument xmlDoc = new XmlDocument()

xmlDoc.Load( Server.MapPath("xmlTesting.xml"))

XmlNode root=xmlDoc.DocumentElement

(2) 得到节点

//得到id为2book节点下的所有节点

XmlNodeList xmlNodes = root.SelectNodes("//book[@id='02']//*")

XmlNode tempNode = xmlNodes[0]//得到第一个节点

//将tempbook强制转化为XmlElement

XmlElement xmlelement = (XmlElement)root.SelectSingleNode("tempbook")

(3) 修改节点内容

XmlNode tempBook = root.SelectSingleNode("tempbook")//修改节点内容

tempBook. InnerText="漫画"

(4)得到节点的属性值并修改:

//得到节点的属性

//法1

XmlAttributeCollection attrbute= tempBook.Attributes

string bookID = attrbute[0].Value

//法2:

string bookid = tempBook.Attributes[0].Value.ToString()

//修改节点属性的值

tempBook.Attributes[0].Value = "0000"

(5)添加一个根节点

XmlNode node = xmlDoc.CreateElement("testing");

node.InnerText = "testing"

root.AppendChild(node)

(6)保存修改后的文档

xmlDoc.Save(Server.MapPath("tempTesting.xml"))

******其他:

(一)显示xml信息

1以xml文档的样式显示:xmlDoc.outerxml

2.显示各个节点

XmlNode root = xmlDoc.DocumentElement//得到根节点:

if (root.ChildNodes.Count >0)

{

XmlNode xmlnode = root.FirstChild//得到子结点:

for (int i = 0i <root.ChildNodes.Counti++)

{

MessageBox.Show(xmlnode.FirstChild .InnerText)

xmlnode = xmlnode.NextSibling或mlNode subNode2 = root.LastChild

}

}

else

MessageBox.Show("没有内容!")

(二)将数据库的信息导入为xml

XmlDocument xmlDocItem = new XmlDocument()

DataSet ds = GetDataSet(strtsql);//调用方法从数据库中得到DataSet。

xmlDocItem.LoadXml(ds .GetXml ())//导入xml中;

*****************************以下是在网络上找到的关于C# *** 作xml文件的总结***

一:创建并保存xml文件

string FileName =Application.StartupPath+"""phone.xml"

XmlTextWriter objXmlTextWriter = new XmlTextWriter(FileName,Encoding.Default)

objXmlTextWriter.Formatting = Formatting.Indented

objXmlTextWriter.Indentation = 6

objXmlTextWriter.WriteStartDocument()

objXmlTextWriter.WriteStartElement("", "PhoneBook", "")

objXmlTextWriter.WriteStartElement("", "Name", "")

objXmlTextWriter.WriteString("加菲尔德")

objXmlTextWriter.WriteEndElement()

objXmlTextWriter.WriteStartElement("", "Number", "")

objXmlTextWriter.WriteString("5555555")

objXmlTextWriter.WriteEndElement()

objXmlTextWriter.WriteStartElement("", "City", "")

objXmlTextWriter.WriteString("纽约")

objXmlTextWriter.WriteEndElement()

objXmlTextWriter.WriteStartElement("", "DateOfBirth", "")

objXmlTextWriter.WriteString("26/10/1978")

objXmlTextWriter.WriteEndElement()

objXmlTextWriter.WriteEndElement()

objXmlTextWriter.WriteEndDocument()

objXmlTextWriter.Flush()

objXmlTextWriter.Close()

这段代码在win2003ser+vs2005环境下测试通过,出来的效果很好,也比较容易理解,我一般就是用这段代码创建XML文件。

二、读取、修改XML文件的某个节点的值

string path = "phone.xml"

XmlDocument doc = new XmlDocument()

doc.Load(path)

//读所有节点表

XmlNamespaceManager xnm = new XmlNamespaceManager(doc.NameTable)

//读取节点值

XmlNode node = doc.SelectSingleNode("/PhoneBook/Name", xnm)//node.InnerText 就是读取出来的值

//修改节点值

node.InnerText="要修改的内容"

//保存修改后的内容

doc.Save(path)

首先获取想要复制节点的值,然后添加。

 XElement rootNode = XElement.Load("test.xml")

            var result = from m in rootNode.Elements ("MM02")

                         where m.Attribute ("id").Value =="1"

                         select new 

                             {

                                 id=m.Attribute ("id").Value ,

                                 fname = m.Element ("FNAM").Value ,

                                 fval = m.Element("FVAL").Value  

                             }

            

            foreach (var s in result)

            { 

                XElement x = 

                    new XElement("MM02", new XAttribute("id",s.id ),

                    new XElement ("FNAM",s.fname ),

                    new XElement ("FVAL",s.fval)

                    )

                XElement node = rootNode.Element("MM02")

                rootNode.Element("MM02").AddAfterSelf(x)

                rootNode.Save("test.xml")

            }


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11387282.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存