Работает на вашем устройстве · Ваш файл никогда не покидает устройство.
Перетащите файл XML с повторяющимися записями — <records><record>…</record>…</records>, RSS-ленту, выгрузку из базы — и получите CSV с одной строкой на запись. Документ читает XML-разбор браузера, а затем автоматически находится самый длинный список повторяющихся элементов, во что бы он ни был обёрнут — будь то атрибут на обёртке или собственные заголовок и ссылка ленты рядом с её элементами, — и строка под результатом называет использованный список.
Каждая запись разворачивается так же, как в инструменте «JSON в CSV»: вложенные элементы становятся столбцами через точку (address.city), атрибуты — столбцами с префиксом @ (@id), повторяющиеся внутренние элементы со своими потомками получают нумерованные столбцы (line.0.sku), повторяющиеся текстовые элементы соединяются точкой с запятой (a;b), а строка заголовков — объединение всех найденных столбцов. Значения записываются ровно так, как в XML. Поля с запятыми, кавычками и переносами строк берутся в кавычки по RFC 4180.
CSV в UTF-8 с необязательной меткой BOM для Excel, разделитель выбираете вы, первые 200 строк можно просмотреть до скачивания. Ничего не загружается на сервер.
Не подходит для: Документов с несколькими списками записей — строками становится только самый длинный; чтобы взять другой, преобразуйте файл в JSON, скопируйте нужный список и преобразуйте его инструментом «JSON в CSV».
Строки — это самый длинный список повторяющихся элементов где угодно под корнем, во что бы он ни был обёрнут. <records count="2"><record>…</record><record>…</record></records> даёт по строке на каждый <record>, хотя у обёртки есть атрибут. RSS-лента даёт по строке на каждый <item> со столбцами вроде title, link и pubDate, хотя собственные title и link канала стоят рядом с элементами. Строка под результатом называет использованный список, например rss.channel.item.
Значения рядом с этим списком, вроде собственного заголовка ленты, не относятся ни к одной записи и пропускаются. Если в документе несколько списков записей, строками становится только самый длинный. Чтобы взять другой, преобразуйте файл в /xml-to-json, скопируйте этот список от [ до ], вставьте в /json-to-csv и преобразуйте.
Если повторяющегося элемента нет, единственная запись и становится строкой, а столбцы — это её собственные имена полей: <records><record><name>Анна</name><city>Казань</city></record></records> даёт столбцы name и city. Поэтому файл, в котором иногда одна запись, а иногда много, сохраняет тот же заголовок — это важно, когда другая программа читает столбцы по имени.
Значения записываются ровно так, как в XML: 1.50 остаётся 1.50, TRUE — TRUE, элемент с NULL даёт текст NULL, а пустой элемент — пустую ячейку. 007 сохраняет нули, а даты остаются как написаны. Перед значением, которое начинается с =, +, - или @, ставится апостроф, как в /json-to-csv, чтобы табличная программа не выполнила его как формулу.
Повторяющиеся дочерние элементы, в которых только текст, соединяются точкой с запятой в одной ячейке, так что два элемента <tag> дают a;b. Повторяющиеся дочерние элементы со своими потомками получают нумерованные столбцы, например line.0.sku и line.1.sku. Префиксы пространств имён остаются в именах столбцов, как в soap:Body.price. Текст, стоящий рядом с дочерними элементами, попадает в столбец #text, и его место среди них не сохраняется. Файл читается в кодировке, объявленной в его первой строке.
Ещё в разделе Таблицы и данные
Эта страница на других языках: English · العربية · Deutsch · Français · Español · Português · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা