Рассмотрим следующий MediaObject классLinq для XML скомбинировать значения
Public Class MediaObject
Public Path as String
Public File as String
Public Sub New(_path as String, _file as String)
Path = _path
File = _file
End Sub
End Class
я следующий XML (myxml):
<records>
<media>
<path>\\first\path</path>
<file>firstfile</file>
</media>
<media>
<path>\\second\path</path>
<file>secondfile</file>
</media>
<records>
Чтобы получить список MediaObjects Я использую это:
Dim mobjects As New List(Of MediaObject)
Dim x As XDocument = XDocument.Parse(myxml)
mobjects = (From m In x.<records>.<media> Select media = New MediaObject(m.<path>.Value, m.<file>.Value)).ToList()
Все в порядке. Но теперь рассмотрим этот новый XML (где второй файл является дублер первого):
<records>
<media>
<path>\\first\path</path>
<file>firstfile</file>
<path>\\second\path</path>
<file>secondfile</file>
</media>
</records>
Я могу легко получить либо из свойств, но не оба, т.е.
Dim mobjects As New List(Of MediaObject)
Dim x As XDocument = XDocument.Parse(myxml)
'here get only the paths
Dim r = (From m In x.<records>.<media> Select media = (From t In m.<path> Select New MediaObject(t.Value, Nothing)).ToList()).ToList()
mobjects = r(0)
Как я пошел бы создать список MediaObjects в этом контексте? (давайте рассмотрим значения пути и файла в xml в последовательности и идем 2 на 2)
Спасибо!
ОБНОВЛЕНИЕ: Извините, я не был достаточно точным. Вот сценарий реального мира. Там может множество путей и файлов, и это гарантировано
- пути приходят перед файлами
- есть одно и то же число путей и файлов
- все пути приходят первые, то все файлы
Sample :
<records>
<media>
<some_tags />
<path>\\first\path</path>
<path>\\second\path</path>
<might_be_something_here />
<file>firstfile</file>
<file>secondfile</file>
<more_tags />
</media>
</records>
PS: Я не могу изменить XML, который поступает из другой системы. ..
Thanks Jeff. Извините, я не был достаточно точным, я обновил свой вопрос. Тем не менее, я совершенно уверен, что это путь, используя, возможно, NodesAfterSelf и выбор N-го файла. – jhfelectric
Итак, вы спариваете каждый n-й путь и файл, никаких проблем. –
Спасибо, что отлично! – jhfelectric