srinivas1221 Ответов: 2

Слияние двух xmls в один in VB.NET


у меня есть 2 xmls а именно 1.xml и еще 2.xml-да.
я хочу слить их воедино. 2.xml чтобы 1.xml и создайте единый xml-файл .

<Container>
  <Cow1>
    <IEnumMetadata />
  </Cow1>
  </Container>


и

<Container>
  <Cow2>
    <IEnumMetadata />
  </Cow2>
  <Cow3>
    <IEnumMetadata />
  </Cow3>
</Container>


я объединил их но проблема в том что мне нужно объединить контент только для меня выход есть

<Container>
  <Cow1>
    <IEnumMetadata />
  </Cow1>
  <Container>
    <Cow2>
      <IEnumMetadata />
    </Cow2>
    <Cow3>
      <IEnumMetadata />
    </Cow3>
  </Container>
</Container>



но я хочу получить его как можно скорее.

<Container>
  <Cow1>
    <IEnumMetadata />
  </Cow1>
      <Cow2>
      <IEnumMetadata />
    </Cow2>
    <Cow3>
      <IEnumMetadata />
    </Cow3>
 </Container>


Любая помощь пожалуйста

Что я уже пробовал:

Dim doc1 As New XmlDocument()
       Dim doc2 As New XmlDocument()

       If File.Exists("2.xml") Then

           doc2.Load(2.xml)
       End If

       If File.Exists(1.xml) Then

           doc1.Load(1.xml)
       End If

       Dim lnodContainer As Xml.XmlNode = doc2.SelectSingleNode("//Container")

       Dim copiedNode As XmlNode = doc1.ImportNode(lnodContainer, True)
       doc1.DocumentElement.AppendChild(copiedNode)

       doc1.Save("Mergd.xml")

2 Ответов

Рейтинг:
9

Richard Deeming

Попробуйте что-нибудь вроде этого:

If File.Exists("1.xml") AndAlso File.Exists("2.xml") Then
    Dim doc1 As New XmlDocument()
    doc1.Load("1.xml")
    
    Dim doc2 As New XmlDocument()
    doc2.Load("2.xml")
    
    If doc2.DocumentElement.HasChildNodes Then
        For Each node As XmlNode In doc.DocumentElement.ChildNodes
            Dim copiedNode As XmlNode = doc1.ImportNode(node, True)
            doc1.DocumentElement.AppendChild(copiedNode)
        Next
    End If
    
    doc1.Save("Merged.xml")
End If


Рейтинг:
16

phil.o

Попробуй

Dim lnodContainer As Xml.XmlNode = doc2.SelectSingleNode("//Container")
ForEach child As XmlNode In lnodContainer.ChildNodes
   doc1.AppendChild(child)
Next

Есть некоторые отсутствующие двойные кавычки вокруг имен файлов; я был бы удивлен, что это будет компилироваться как есть.


srinivas1221

спасибо, но будет ли компилятор принимать его, потому что innerXml-это тип sting, будет ли он преобразован в тип XmlNode

phil.o

Вы правы. Я изменил свое решение, чтобы перечислить узлы в doc2 и добавить их в doc1.