2012-05-24 3 views
0

Я создаю визуализацию данных, и я хочу использовать CSV в качестве базового формата данных для легкости и простоты использования. Мои исходные данные находятся в тяжелом XML, поэтому я конвертирую его в CSV, используя Python и lxml.Представление XML в CSV: советы по работе с дочерними тегами

Мой вопрос в том, что. Когда у меня есть несколько дочерних тегов внутри XML, как <City> тегов в следующем:

<Country> 
    <Name>France</Name> 
    <Cities> 
    <City><Name>Paris</Name></City> 
    <City><Name>Lyon</Name></City> 
    </Cities> 
</Country> 
<Country> 
    <Name>Germany</Name> 
    <Cities> 
    <City><Name>Berlin</Name></City> 
    <City><Name>Munich</Name></City> 
    <City><Name>Aachen</Name></City> 
    </Cities> 
</Country> 

Как я должен представить их в файл CSV мой? Я могу представить два варианта. Во-первых, чтобы добавить столбец для каждого города, до CityN:

Country,City1,City2,City3 
France,Paris,Lyon,, 
Germany,Berlin,Munich,Aachen 

Второй использовать массив для всех городов:

Country,Cities 
France,[Paris,Lyon] 
Germany,[Berlin,Munich,Aachen] 

Это может быть, что лучший формат зависит только от о том, как я хочу запросить данные, но я подумал, что я проверил бы здесь, чтобы увидеть, есть ли устоявшийся или лучший способ сделать это.

ответ

0

Учитывая, что вы собираетесь использовать CSV, версия массива превосходит сохраненную структуру документа на основе полей. Без номенклатуры массива запятая перегружается как разделитель полей, так и как значение в полевом разделителе без возможности определить, что находится в игре, за исключением подсчета полей с левой стороны записи.

Версия, отличная от массива, также ограничивает ваши данные одной вложенной коллекцией для каждого типа записи. Это не проблема в текущем примере, но может быть для другого типа записи в вашем приложении. Использование (единого) стандартного подхода повышает ясность и удобство обслуживания.

+0

Спасибо, это была моя мысль. Затем я должен десериализовать строку в массив на стороне клиента, но это нормально, учитывая другие преимущества, я думаю. – flossfan

Смежные вопросы