Я последовал этому SO отвечать, чтобы превратить приведенную ниже структуру xml в набор данных.
<?xml version = "1.0" encoding = "UTF-8"?>
<data>
<child1>
<to>[email protected]</to>
<from>[email protected]</from>
<name>alice alicia</name>
</child1>
<child2>
<file>
<size>123</size>
<content>lorem ipsum</content>
</file>
</child2>
</data>
В наборе данных получилось 3 таблицы:
В конце концов, я хочу иметь только 1 таблицу с 5 столбцами (до, от, имя, размер, содержимое).
Могу ли я использовать схему для разработки способа, которым ReadXml в DataSet интерпретирует XML в желаемую таблицу? И если да, то как бы выглядела такая схема?
Я подумал о еще двух решениях, хотя я меньше предпочитаю их, потому что они требуют ручной обработки, что, как я считаю, дорого обходится при работе со многими xmls:
Вы можете использовать XSLT для преобразования вашего xml в плоскую структуру. Кроме того, почему теги child1
и child2
имеют разные имена, если они должны быть одинаковыми?
Вы можете вручную просмотреть XML и создать для него свою собственную логику преобразования XML в таблицу. Вы также можете использовать сторонние решения для этого, как указано в комментариях к вашему вопросу. Предлагаемые вами варианты возможны (и проще), но требуют, чтобы вы обрабатывали данные несколько раз. Это нормально для небольших наборов данных, но может вызвать медленную обработку при работе с большими наборами данных. См. <stackoverflow.com/questions/2915294/…> о том, как самостоятельно перебирать XML-файлы
В конце я применил подход, предложенный @FedericoNavarrete. Очень хорошо работал у меня вместе с этим SO Как ответить (stackoverflow.com/questions/10518372/…). Спасибо!
Вы думали о том, чтобы разобрать свой XML на C#? xmltocsharp.azurewebsites.net, вы сэкономите много времени и легко обработаете объект со своей стороны. Попробуйте.