Совет по созданию многоуровневого CSV-файла

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

Name, Id, Date

В то время как дочерний узел может содержать:

Name, ChildId

Итак, я ищу стандарт для представления многоуровневых данных в CSV. В XML я могу легко создавать подузлы. Как лучше всего это сделать в CSV? Я хочу создать скрипт для извлечения этих данных, не путаясь в том, что является родительскими данными, а что — дочерними данными.

В XML это может выглядеть так:

<Parent Name="name1">
<Child Name="ChildName1"></Child>
<Child Name="ChildName2"></Child>
</Parent>

<Parent Name="name2">
<Child Name="ChildName1"></Child>
<Child Name="ChildName2"></Child>
</Parent>

person serializer    schedule 03.10.2012    source источник
comment
Похоже, что каждый ‹Родительский /› будет строкой в ​​вашем CSV, а каждый ‹Дочерний › будет столбцом.   -  person Nathan Romano    schedule 03.10.2012
comment
Итак, каково ваше предложение, чтобы я использовал разные разделители? Пожалуйста, дайте мне один пример строки в формате, разделенном запятыми, с двумя дочерними элементами.   -  person serializer    schedule 03.10.2012
comment
Спасибо, возможно, вы имели в виду то же самое, но в итоге я использовал ту же строку, что и эта: ParentColumn1 ParentColumn2 ChildColumn1 ChildColumn2   -  person serializer    schedule 24.10.2012


Ответы (1)


XML можно свести к минимуму:

<names>
 <name1>
  <childName1/>
  <childName2/>
 </name1>

 <name2>
  <childName1/>
  <childName2/>
 </name2>
</names>

И CSV к этому:

name1  ChildName1
name1  ChildName2
name2  ChildName1
name2  ChildName2

с сериализацией JSON следующим образом:

{"names":
 [
  {
  "name1":
   [
    {
    "childName1":""
    },
    {
    "childName2":""
    }
   ]
  },
  {
  "name2":
   [
    {
    "childName1":""
    },
    {
    "childName2":""
    }
   ]
  }
 ]
}

Ориентированным на строки способом XML может быть:

<names>
 <name1 name="ChildName1|ChildName2">
 <name2 name="ChildName1|ChildName2">
</names>

И соответствующий CSV:

name1  ChildName1|ChildName2
name2  ChildName1|ChildName2

И соответствующий JSON:

{"names": [{"name1":"ChildName1|ChildName2"},{"name2":"ChildName1|ChildName2"}]}

Ссылки

person Community    schedule 10.04.2014