在XMLDocument的中间插入带有Children的新XMLNode [英] Insert New XMLNode with Children in the middle of an XMLDocument

查看:141
本文介绍了在XMLDocument的中间插入带有Children的新XMLNode的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Hello All,



我有一个与XML相关的问题,我希望有人可以回答。假设我有以下现有的XML:



< RootElement>


< Element1>值1< / Element1>


< PartOrderRequest>


< RequestItem> ;


< span style =""> < ID> 1< / ID>


< / RequestItem>


< RequestOrder>


< FOP>< / FOP>


< / RequestOrder>


< / PartOrderR equest>


< Element2>值2< / Element2>


< / RootElement>



我想要完成的是:



< RootElement>


< span style ="font-size:8pt; font-family:'Courier New'"> < Element1>值1< / Element1>


< PartOrderRequest>


< RequestItem>


< ID> 1< / ID>


< / RequestItem>


< RequestItem>


< ID> 2< / ID>


< / RequestItem>


< RequestOrder> ;


< span style =""> < FOP>< / FOP>


< / RequestOrder>


< / PartOrderRequest>


< Element2>值2< / Element2>


< / RootElement>



这是我编写的将红色部分插入初始XML文档的代码:



昏暗 elmParent 正如 XmlNode = document.SelectSingleNode(" // RootElement / PartOrderRequest"


Dim lstChildren As XmlNodeList = elmParent.ChildNodes



For 每个目录作为 XmlNode lstChildren


< p class = MsoNormal style ="margin:0in 0in 0pt"> 如果 dir.Name = "RequestOrder" 那么


Dim elmNew 作为 XmlElement = document.CreateElement(" RequestItem"


elmParent.InsertBefore(elmNew,dir)



elmNew = document.CreateElement(< span style ="color:#a31515">" ID"


Dim txtID As XmlText = document.CreateTextNode(" 2"


elmParent.InsertBefore(elmNew, dir).AppendChild(txtID)


elmParent.InsertBefore(elmNew, dir)


结束 如果


下一步


< p class = MsoNormal style ="margin:0in 0in 0pt">


但我没有得到上面所期望的(红色),而是得到以下内容:



< RequestItem />


< ID> 2< / ID> ;



它仍显示在正确的位置。但是,"ID"标签不在"RequestItem"标签内,而是在它正上方关闭。



有没有人碰巧知道这个问题的解决方案?非常感谢。



谢谢,

解决方案

使用AppendChild()


对于每个目录作为XmlNode在lstChildren


Hello All,

 

I have an XML related question, which I am hoping someone can answer. Lets say I have the following existing XML:

 

<RootElement>

    <Element1>Value 1</Element1>

    <PartOrderRequest>

        <RequestItem>

            <ID>1</ID>

        </RequestItem>

        <RequestOrder>

            <FOP></FOP>

        </RequestOrder>

    </PartOrderRequest>

    <Element2>Value 2</Element2>

</RootElement>

 

And what I am trying to accomplish is the following:

 

<RootElement>

    <Element1>Value 1</Element1>

    <PartOrderRequest>

        <RequestItem>

            <ID>1</ID>

        </RequestItem>

        <RequestItem>

            <ID>2</ID>

        </RequestItem>

       <RequestOrder>

            <FOP></FOP>

       </RequestOrder>

    </PartOrderRequest>

    <Element2>Value 2</Element2>

</RootElement>

 

Here is the code I have written to insert the part in red into the initial XML document:

 

        Dim elmParent As XmlNode = document.SelectSingleNode("//RootElement/PartOrderRequest")

        Dim lstChildren As XmlNodeList = elmParent.ChildNodes

 

        For Each dir As XmlNode In lstChildren

            If dir.Name = "RequestOrder" Then

                Dim elmNew As XmlElement = document.CreateElement("RequestItem")

                elmParent.InsertBefore(elmNew, dir)

 

                elmNew = document.CreateElement("ID")

                Dim txtID As XmlText = document.CreateTextNode("2")

                elmParent.InsertBefore(elmNew, dir).AppendChild(txtID)

                elmParent.InsertBefore(elmNew, dir)

            End If

        Next

 

But instead of getting what I was expecting above (in red), I get the following:

 

    <RequestItem />

    <ID>2</ID>

 

It still shows up at the correct location. But Instead of the "ID" tag being inside of the "RequestItem" tag, it closes right above it.

 

Does anyone happen to know the solution to this problem? It would be very much appreciated.

 

Thank You,

解决方案

Use AppendChild()

For Each dir As XmlNode In lstChildren


这篇关于在XMLDocument的中间插入带有Children的新XMLNode的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆