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: