Парсинг большого 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
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д