Парсинг большого XML документа - C#
Формулировка задачи:
Доброго времени суток! Помогите пожалуйста спарсить XML файл такого рода. Вот его кусочек:
Сам файл около 16МБ. Нужно среди всех ToolID найти тот, который будет задан в textbox и вывести всю информацию (значения тегов) в treeview или listbox. Прочитал кучу примеров, но так ничего толкового и не нашёл.
Help please!!!
<Tools>
<CatalogTool>
<ToolID>RA411.5-2654D0.4062 K20</ToolID>
<GTCGeneric>DRLFSS</GTCGeneric>
<GTCVendorSpecific>DRLFSS</GTCVendorSpecific>
<CatalogSpecificNode />
<LifeCycleState>new</LifeCycleState>
<TimeStamp>2014-06-27T15:45:36.473</TimeStamp>
<DocumentTimeStamp>2014-06-27T15:45:36.473</DocumentTimeStamp>
<Documents>
<CatalogDocument>
<DocumentId>P21</DocumentId>
<Uri>Documents\P21\ra411.5-2654d0.4062 k20.p21.zip</Uri>
</CatalogDocument>
<CatalogDocument>
<DocumentId>Draw2D</DocumentId>
<Uri>Documents\Draw2D\0048299.dxf.zip</Uri>
</CatalogDocument>
<CatalogDocument>
<DocumentId>ToolImage</DocumentId>
<Uri>Documents\ToolImage\142479.jpg.zip</Uri>
</CatalogDocument>
<CatalogDocument>
<DocumentId>ToolImage</DocumentId>
<Uri>Documents\ToolImage\142764.jpg.zip</Uri>
</CatalogDocument>
</Documents>
</CatalogTool>
<CatalogTool>
<ToolID>RA411.5-2854D0.4375 K20</ToolID>
<GTCGeneric>DRLFSS</GTCGeneric>
<GTCVendorSpecific>DRLFSS</GTCVendorSpecific>
<CatalogSpecificNode />
<LifeCycleState>new</LifeCycleState>
<TimeStamp>2014-06-27T15:45:55.353</TimeStamp>
<DocumentTimeStamp>2014-06-27T15:45:55.353</DocumentTimeStamp>
<Documents>
<CatalogDocument>
<DocumentId>P21</DocumentId>
<Uri>Documents\P21\ra411.5-2854d0.4375 k20.p21.zip</Uri>
</CatalogDocument>
<CatalogDocument>
<DocumentId>Draw2D</DocumentId>
<Uri>Documents\Draw2D\0048307.dxf.zip</Uri>
</CatalogDocument>
<CatalogDocument>
<DocumentId>ToolImage</DocumentId>
<Uri>Documents\ToolImage\142479.jpg.zip</Uri>
</CatalogDocument>
<CatalogDocument>
<DocumentId>ToolImage</DocumentId>
<Uri>Documents\ToolImage\142764.jpg.zip</Uri>
</CatalogDocument>
</Documents>
</CatalogTool>
<CatalogTool>
<ToolID>RA411.5-3034D0.4531 K20</ToolID>
<GTCGeneric>DRLFSS</GTCGeneric>
<GTCVendorSpecific>DRLFSS</GTCVendorSpecific>
<CatalogSpecificNode />
<LifeCycleState>new</LifeCycleState>
<TimeStamp>2014-06-27T15:45:56.363</TimeStamp>
<DocumentTimeStamp>2014-06-27T15:45:56.363</DocumentTimeStamp>
<Documents>
<CatalogDocument>
<DocumentId>P21</DocumentId>
<Uri>Documents\P21\ra411.5-3034d0.4531 k20.p21.zip</Uri>
</CatalogDocument>
<CatalogDocument>
<DocumentId>Draw2D</DocumentId>
<Uri>Documents\Draw2D\0048309.dxf.zip</Uri>
</CatalogDocument>
<CatalogDocument>
<DocumentId>ToolImage</DocumentId>
<Uri>Documents\ToolImage\142479.jpg.zip</Uri>
</CatalogDocument>
<CatalogDocument>
<DocumentId>ToolImage</DocumentId>
<Uri>Documents\ToolImage\142762.jpg.zip</Uri>
</CatalogDocument>
</Documents>
</CatalogTool>
Решение задачи: «Парсинг большого XML документа»
textual
Листинг программы
XmlDocument doc = new XmlDocument();
doc.Load(path_to_file);
var nodes = doc.SelectNodes("Tools/CatalogTool");
var ToolID = textBox1.Text;
foreach (XmlElement node in nodes)
{
if (node["ToolID"].InnerText == ToolID)
{
foreach (XmlElement node2 in node)
{
// добавляем в treeview или listbox значения node2.InnerText
}
}
}