From: Jackson420 on 20 Aug 2010 08:10 Hi I have a question regarding joining xml files on a key which is present in all file, following is my code docFTR is of type XDocument xdList is List(Of XDocument) Dim doc = From x In docFTR.Descendants("Data") From i In xdList.GetRange(0, 1) Join d In xdList(0).Descendants("Data") On x.Descendants("Guid").Value Equals d.Descendants("Guid").Value i need to programmatically replace xdList(0) with the current XDcoument which comes from "From i in xdList.getRange(0,2)" GetRange(0, could be 2 to 10) Any help is welcome TIA Jacko
From: Martin Honnen on 20 Aug 2010 09:10 Jackson420 wrote: > Hi > > I have a question regarding joining xml files on a key which is present in > all file, following is my code > > docFTR is of type XDocument > xdList is List(Of XDocument) > Dim doc = From x In docFTR.Descendants("Data") From i In xdList.GetRange(0, > 1) Join d In xdList(0).Descendants("Data") On x.Descendants("Guid").Value > Equals d.Descendants("Guid").Value > > i need to programmatically replace xdList(0) with the current XDcoument > which comes from "From i in xdList.getRange(0,2)" > > GetRange(0, could be 2 to 10) Join d in i.Descendants("Data") should do but that sounds too obvious maybe. If that does not help then consider to post some sample data, at least I am not good at writing queries without seeing some sample data. -- Martin Honnen --- MVP Data Platform Development http://msmvps.com/blogs/martin_honnen/
From: Jackson420 on 20 Aug 2010 10:36 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 Note: the XDocument must not be hard coded in the command TIA Jacko "Martin Honnen" <mahotrash(a)yahoo.de> wrote in message news:uwBnVkGQLHA.456(a)TK2MSFTNGP06.phx.gbl... > Jackson420 wrote: >> Hi >> >> I have a question regarding joining xml files on a key which is present >> in all file, following is my code >> >> docFTR is of type XDocument >> xdList is List(Of XDocument) >> Dim doc = From x In docFTR.Descendants("Data") From i In >> xdList.GetRange(0, 1) Join d In xdList(0).Descendants("Data") On >> x.Descendants("Guid").Value Equals d.Descendants("Guid").Value >> >> i need to programmatically replace xdList(0) with the current XDcoument >> which comes from "From i in xdList.getRange(0,2)" >> >> GetRange(0, could be 2 to 10) > > Join d in i.Descendants("Data") > should do but that sounds too obvious maybe. > > If that does not help then consider to post some sample data, at least I > am not good at writing queries without seeing some sample data. > > -- > > Martin Honnen --- MVP Data Platform Development > http://msmvps.com/blogs/martin_honnen/
From: Martin Honnen on 20 Aug 2010 12:49 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: Jackson420 on 21 Aug 2010 07:59 Excellent job - on the dot MANY THANKS Jacko "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/
|
Next
|
Last
Pages: 1 2 Prev: Weird security configuration message Next: ModalPopupExtender and Required Field Validator |