Я знаю, что есть много ресурсов, которые показывают, как привязывать dataGridViews к файлам XML или заполнять их из XML, но XML, который я использую в качестве источника, немного сложнее, чем любой пример, который я видел и я изо всех сил стараюсь. (хотя это действительно не должно быть сложно)C# dataGridView из файла XML
Мне нужно выполнить несколько запросов (я думаю), чтобы получить данные, которые я хочу заполнить DGV, потому что элементы, из которых я хочу, чтобы контент находился на разных родительских узлах XML.
Вот что у меня есть, и замечания должны показать, что я пытаюсь достичь:
XDocument xmlDoc = XDocument.Load("Techdocx_dml.xml");
var q = from c in xmlDoc.Root.Descendants("dmentry")
.Descendants("avee")
//.Descendants("dmtitle") I also need to access this descendant
select new
{
modelic = c.Element("modelic").Value,
sdc = c.Element("sdc").Value,
chapnum = c.Element("chapnum").Value,
section = c.Element("section").Value,
subsect = c.Element("subsect").Value,
subject = c.Element("subject").Value,
discode = c.Element("discode").Value,
discodev = c.Element("discodev").Value,
incode = c.Element("incode").Value,
incodev = c.Element("incodev").Value,
itemloc = c.Element("itemloc").Value,
// techname = c.Element("techname").Value,
//need this value, which is on the "dmtitle" node, not the "avee" node
};
dataGridView1.DataSource = q.ToList();
dataGridView1.ColumnHeadersVisible = false;
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
Это то, что я хочу в моей DataGridView:
AA A 32 3 5 00 01 A 018 A A | Some title 1 | Introduction
AA A 32 3 5 00 01 A 920 A A | Some title 2 | Some infoname 2
Как я этого добиться? Пример XML ниже:
<dml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<dmentry>
<addresdm>
<dmc>
<avee>
<modelic>AA</modelic>
<sdc>A</sdc>
<chapnum>32</chapnum>
<section>3</section>
<subsect>5</subsect>
<subject>00</subject>
<discode>01</discode>
<discodev>A</discodev>
<incode>018</incode>
<incodev>A</incodev>
<itemloc>A</itemloc>
</avee>
</dmc>
<dmtitle>
<techname>Some title 1</techname>
<infoname>Introduction</infoname>
</dmtitle>
<issno issno="001" type="New"/>
<issdate year="2016" month="06" day="10"/>
<language language="SX" country="GB"/>
</addresdm>
<security class="1"/>
</dmentry>
<dmentry>
<addresdm>
<dmc>
<avee>
<modelic>AA</modelic>
<sdc>A</sdc>
<chapnum>32</chapnum>
<section>3</section>
<subsect>5</subsect>
<subject>00</subject>
<discode>01</discode>
<discodev>A</discodev>
<incode>920</incode>
<incodev>A</incodev>
<itemloc>A</itemloc>
</avee>
</dmc>
<dmtitle>
<techname>Some title 2</techname>
<infoname>Some infoname 2</infoname>
</dmtitle>
<issno issno="001" type="New"/>
<issdate year="2016" month="06" day="10"/>
<language language="SX" country="GB"/>
</addresdm>
<security class="1"/>
</dmentry>
</dml>
Не мог бы вы привести пример для вывода? – iceDragon
Я получаю именно то, что вы ожидаете от моего запроса. Я хочу то же самое, но с добавлением значений, показанных в запросе, который я прокомментировал. Таким образом, значения всех дочерних элементов в теге (что я и получаю), но также и значение двух дочерних элементов . –
Daedalus
вы можете создать DataTable со всеми столбцами, которые вы хотите, а затем заполнить каждую строку двумя запросами linq. или просто создайте класс со всеми свойствами и назначьте эти свойства в двух запросах. – iceDragon