From: Jackson420 on

Hi Martin

The final requirement is a bit different, i completed it through 2-stage
process, lets see if you can do this

<ColumnData>
<Data>
<Guid>d2152461-5005-4f22-af65-66f1fe734e81</Guid>
<Data>Sales org #1|Sales org #2|Sales org #3</Data>
</Data>
<Data>
<Guid>4bea02ee-f986-423e-a093-71d78f61ea9b</Guid>
<Data>G146|G147|G148
</Data>
</ColumnData>



"Martin Honnen" <mahotrash(a)yahoo.de> wrote in message
news:uODD9eIQLHA.4988(a)TK2MSFTNGP04.phx.gbl...
> Jackson420 wrote:
>> Here is a sample data of 1 file, you may make 3 more of the same and try
>> to join them on Guid and create an xml file
>>
>> <?xml version="1.0" encoding="utf-8"?>
>> <ColumnData>
>> <Data>
>> <Guid>d2152461-5005-4f22-af65-66f1fe734e81</Guid>
>> <Data>Sales org#</Data>
>> </Data>
>> <Data>
>> <Guid>4bea02ee-f986-423e-a093-71d78f61ea9b</Guid>
>> <Data>G146</Data>
>> </Data>
>> </ColumnData
>
> Here is some sample code processing a List(Of XDocument) of the above
> structure and creating a merged document:
>
> Dim doc1 As XDocument = <?xml version="1.0" encoding="utf-8"?>
> <ColumnData>
> <Data>
>
> <Guid>d2152461-5005-4f22-af65-66f1fe734e81</Guid>
> <Data>Sales org #1</Data>
> </Data>
> <Data>
>
> <Guid>4bea02ee-f986-423e-a093-71d78f61ea9b</Guid>
> <Data>G146</Data>
> </Data>
> </ColumnData>
>
> Dim doc2 As XDocument = <?xml version="1.0" encoding="utf-8"?>
> <ColumnData>
> <Data>
>
> <Guid>d2152461-5005-4f22-af65-66f1fe734e81</Guid>
> <Data>Sales org #2</Data>
> </Data>
> <Data>
>
> <Guid>4bea02ee-f986-423e-a093-71d78f61ea9b</Guid>
> <Data>G147</Data>
> </Data>
> </ColumnData>
>
> Dim doc3 As XDocument = <?xml version="1.0" encoding="utf-8"?>
> <ColumnData>
> <Data>
>
> <Guid>d2152461-5005-4f22-af65-66f1fe734e81</Guid>
> <Data>Sales org #3</Data>
> </Data>
> </ColumnData>
>
> Dim doc4 As XDocument = <?xml version="1.0" encoding="utf-8"?>
> <ColumnData>
> <Data>
>
> <Guid>4bea02ee-f986-423e-a093-71d78f61ea9b</Guid>
> <Data>G148</Data>
> </Data>
> </ColumnData>
>
> Dim docs As New List(Of XDocument)()
> docs.Add(doc1)
> docs.Add(doc2)
> docs.Add(doc3)
> docs.Add(doc4)
>
> Dim mergedDoc As XDocument = New XDocument( _
> New XElement(doc1.Root.Name, _
> From data In docs.<ColumnData>.<Data> _
> Group data By guid = data.<Guid>.Value Into G = Group
> _
> Select New XElement("Data", G(0).<Guid>, G.<Data>)))
>
> mergedDoc.Save(Console.Out)
>
> Output is as follows:
>
> <ColumnData>
> <Data>
> <Guid>d2152461-5005-4f22-af65-66f1fe734e81</Guid>
> <Data>Sales org #1</Data>
> <Data>Sales org #2</Data>
> <Data>Sales org #3</Data>
> </Data>
> <Data>
> <Guid>4bea02ee-f986-423e-a093-71d78f61ea9b</Guid>
> <Data>G146</Data>
> <Data>G147</Data>
> <Data>G148</Data>
> </Data>
> </ColumnData>
>
> Is that what you want? Or how should the merged document look exactly?
>
>
> --
>
> Martin Honnen --- MVP Data Platform Development
> http://msmvps.com/blogs/martin_honnen/


From: Martin Honnen on
Jackson420 wrote:

> The final requirement is a bit different, i completed it through 2-stage
> process, lets see if you can do this
>
> <ColumnData>
> <Data>
> <Guid>d2152461-5005-4f22-af65-66f1fe734e81</Guid>
> <Data>Sales org #1|Sales org #2|Sales org #3</Data>
> </Data>
> <Data>
> <Guid>4bea02ee-f986-423e-a093-71d78f61ea9b</Guid>
> <Data>G146|G147|G148
> </Data>
> </ColumnData>

Yes, that is possible, change the "merge" query to

Dim mergedDoc As XDocument = New XDocument( _
New XElement(doc1.Root.Name, _
From data In docs.<ColumnData>.<Data> _
Group data By guid = data.<Guid>.Value Into G =
Group _
Select New XElement("Data", G(0).<Guid>, New
XElement("Data", String.Join("|", G.<Data>.Select(Function(d)
d.Value).ToArray())))))

(only all on one line).


--

Martin Honnen --- MVP Data Platform Development
http://msmvps.com/blogs/martin_honnen/
From: Jackson420 on
Thanks

"Martin Honnen" <mahotrash(a)yahoo.de> wrote in message
news:%23$rjMx4QLHA.2100(a)TK2MSFTNGP04.phx.gbl...
> Jackson420 wrote:
>
>> The final requirement is a bit different, i completed it through 2-stage
>> process, lets see if you can do this
>>
>> <ColumnData>
>> <Data>
>> <Guid>d2152461-5005-4f22-af65-66f1fe734e81</Guid>
>> <Data>Sales org #1|Sales org #2|Sales org #3</Data>
>> </Data>
>> <Data>
>> <Guid>4bea02ee-f986-423e-a093-71d78f61ea9b</Guid>
>> <Data>G146|G147|G148
>> </Data>
>> </ColumnData>
>
> Yes, that is possible, change the "merge" query to
>
> Dim mergedDoc As XDocument = New XDocument( _
> New XElement(doc1.Root.Name, _
> From data In docs.<ColumnData>.<Data> _
> Group data By guid = data.<Guid>.Value Into G = Group
> _
> Select New XElement("Data", G(0).<Guid>, New
> XElement("Data", String.Join("|", G.<Data>.Select(Function(d)
> d.Value).ToArray())))))
>
> (only all on one line).
>
>
> --
>
> Martin Honnen --- MVP Data Platform Development
> http://msmvps.com/blogs/martin_honnen/