Marie-Andree
Member
- Joined
- Sep 9, 2015
- Messages
- 8
- Programming Experience
- Beginner
My name is Marie and I am trying to merge two xml document and have a combine result in a new xml document called output.xml. It seems when I am debugging, only the first xml document is combining to the output.xml.
Here is my first xml called Nutrition.xml:
This is my secound xml document called nutrition2.xml:
Here is my vb.net code:
Here is my first xml called Nutrition.xml:
HTML:
<?xml version = "1.0"?
<nutrition xmlns="http://www.deitel.com/nutrition">
<title>Nutrition facts</title>
<size>28 grams</size>
<calories>140 calories</calories>
<caloriesFat>60 calories</caloriesFat>
<fat>8 grams</fat>
<saturedFat>2 grams of Satured Fat</saturedFat>
<choloesterol>5 milligrams</choloesterol>
<sodium>110 milligrams</sodium>
<carbohydrates>15 grams</carbohydrates>
<fiber>2 grams</fiber>
<sugar>15 grams</sugar>
<protein>1 gram</protein>
<description>Nutrition facts for a package of Grandma White's cookies</description>
</nutrition>
This is my secound xml document called nutrition2.xml:
HTML:
<?xml version="1.0"?>
<nutrition xmlns="http://www.deitel.com/nutrition2">
<vitaminA>2</vitaminA>
<vitaminC>10</vitaminC>
<vitaminE>5</vitaminE>
<zinc>8</zinc>
</nutrition>
Here is my vb.net code:
Imports <xmlns:old="http://www.deitel.com/nutrition">
Imports <xmlns:new="http://www.deitel.com/nutrition2">
Public Class NutritionLINQ
Private Sub convertButton_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles CombineButton.Click
Try
' attempt to load files
Dim newDocument = XDocument.Load("Nutrition.xml")
Dim oldDocument = XDocument.Load("Nutrition2.xml")
' convert from old to new format
oldDocument = Transform(oldDocument)
' combine documents and write to output file
SaveFinalDocument(newDocument, oldDocument)
' tell user we succeeded
MessageBox.Show("Documents successfully combined.")
Catch ' catch everything
' inform the user that there was a problem combining
MessageBox.Show("Files could not be combined.")
MessageBox.Show("This was probably caused by an I/O error.")
End Try
End Sub ' Main
Private Function Transform(ByVal document As XDocument) As XDocument
Dim newDocumentRoot =
<nutrition>
<%= From nutrition In document.Root.Elements()
Select
<nutrition information=
<%= nutrition.<old:title>.Value %>
<%= nutrition.<old:size>.Value %>
<%= nutrition.<old:calories>.Value %>
<%= nutrition.<old:caloriesFat>.Value %>
<%= nutrition.<old:fat>.Value %>
<%= nutrition.<old:saturedFat>.Value %>
<%= nutrition.<old:choloesterol>.Value %>
<%= nutrition.<old:Sodium>.Value %>
<%= nutrition.<old:carbohydrates>.Value %>
<%= nutrition.<old:fiber>.Value %>
<%= nutrition.<old:sugar>.Value %>
<%= nutrition.<old:protein>.Value %>
<%= nutrition.<old:description>.Value %>
<%= nutrition.<new:vitaminA>.Value %>
<%= nutrition.<new:vitaminC>.Value %>
<%= nutrition.<new:vitaminE>.Value %>
<%= nutrition.<new:zinc>.Value %>
/>
%>
</nutrition>
Return New XDocument(newDocumentRoot)
End Function
Private Sub SaveFinalDocument(ByVal document1 As XDocument,
ByVal document2 As XDocument)
' create root element, and fill with the elements
' contained in the roots of both documents
Dim root =
<nutrition>
<%= document1.Root.Elements() %>
<%= document2.Root.Elements() %>
</nutrition>
Dim finalDocument As New XDocument(root) ' create new document
finalDocument.Save("output.xml") ' save document to file
End Sub
End Class
Last edited by a moderator: