Я пытаюсь получить данные из XML-документа в массив в C# с помощью LINQ, где мне нужно использовать некоторые вложенные запросы в элементах данных xml, которые следующие:Вложенный запрос XML-документа с использованием LINQ в C#
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Catalog>
<Book ISBN="1.1.1.1" Genre="Thriller">
<Title Side="1">
<Pty R="1" ID="Seller_ID">
<Sub Typ="26" ID="John">
</Sub>
</Pty>
<Pty R="2" ID="ABC">
</Pty>
</Title>
</Book>
<Book ISBN="1.2.1.1" Genre="Thriller">
<Title Side="2">
<Pty R="1" ID="Buyer_ID">
<Sub Typ="26" ID="Brook">
</Sub>
</Pty>
<Pty R="2" ID="XYZ">
</Pty>
</Title>
</Book>
</Catalog>
В приведенном выше XML-документе Side="1"
представляет собой торговую сторону и Side="2"
представляет собой торговую сторону. Теперь я хочу, чтобы хранить выше элементов и атрибутов в массиве, который, как поля следующим образом
Массив ISBN Жанр PublishDate Buyer_Company Seller_Company Buyer_Broker Seller_Broker
я был в состоянии восстановить нормальный элементов и атрибутов, но не был уверен, как справляться с атрибутами, которые зависят от других элементов, таких как Buyer_Company Seller_Company Buyer_Broker Продавец_Broker , которые составлены на основе Side, Pty and Sub
элементов, таких как Buyer_Company
is ID
атрибут Pty, где R= 2 and Side=2
. Точно так же, Buyer_Broker
является ID
атрибутом Sub
элемента, где его атрибут Typ=26
(может быть XML-данными с другим значением Typ
) и Sub
элемент уже является ребенок Pty элемент с R=1
и который в свою очередь является дочерним Book
элемента, когда Side=2
код я использовал для получения независимых элементов является
var result = doc.Descendants("Book")
.Select(b => new
{
ISBN= b.Attribute("ISBN").Value,
Genre=b.Attribute("Genre").Value,
PublishDate= b.Element("Title").Attribute("MMY").Value,
})
.ToArray();
И я работал на запрашивая в пределах одного элемента следующим образом
Company= (string)b.Descendants("Pty")
.Where(e => (int)e.Attribute("R") == 7)
.Select(e => e.Attribute("ID"))
.Single()
Но это не учитывало атрибут Side
в элементе Book
.
Примеры данных
Первая книга Элемент
ISBN:1.1.1.1
Genre:Thriller
Seller_Company:NULL
Seller_Broker:NULL
Buyer_Company:ABC
Buyer_Broker:John
Вторая книга Элемент
ISBN:1.1.1.1
Genre:Thriller
Seller_Company:XYZ
Seller_Broker:Brook
Buyer_Company: NULL
Buyer_Broker:NULL
Side = 1 представляют собой продавец сторона и сторона = 2 представляет сторону покупателя, который почему сторона продавца имеет значение null в первом элементе результирующего массива и покупателя сторона во втором элементе
Могу ли я узнать лучший способ решить эту проблему?
Спасибо, но когда я пытаюсь сохранить их в массиве в какой-то момент как на 'Side = 1 и Side = 2' либо' 'Buyer_Company' или Seller_Company' не будет содержать элементов, и в этом случае я просто хочу сохранить значение «NULL» – DoIt