2016-03-11 8 views
1

Я использую LibreOffice 5.1.1.3 (x64), и я хотел бы сделать живой импорт удаленного XML-файла. URL-адрес файла: http://www.comune.palermo.it/xmls/VIS_DATASET_AGENZIE.xmlКак использовать функцию FILTERXML calc?

Я написал эту формулу, но исчислил импорт только первой строки.

=FILTERXML(WEBSERVICE("http://www.comune.palermo.it/xmls/VIS_DATASET_AGENZIE.xml"),"/main/DATA_RECORD") 

Нормально ли это? Как импортировать все строки вывода запроса XPath?

В Gdrive листе он работает с:

=IMPORTXML("http://www.comune.palermo.it/xmls/VIS_DATASET_AGENZIE.xml","/main/DATA_RECORD") 

Большое спасибо

ответ

0

Видимо FILTERXML возвращает первый матч, который он находит. Используйте синтаксис [], чтобы указать другое совпадение.

Чтобы получить один DATA_RECORD в каждой строке, введите это в ячейке A1:

=FILTERXML(WEBSERVICE("http://www.comune.palermo.it/xmls/VIS_DATASET_AGENZIE.xml"),"/main/DATA_RECORD[" & ROW() & "]") 

Затем перетащите формулу вниз, используя квадрат в правом нижнем углу ячейки.

Чтобы получить всю необходимую страницу, используйте команду WEBSERVICE, не используя FILTERXML.

Для более сильного анализа XML с помощью LibreOffice необходимо написать макрос. Доступно несколько услуг UNO, например раздел 5.38 от Andrew Pitonyak's Macro Document. Или вы можете написать макрос в Java или Python и использовать одну из своих библиотек разбора XML.

+0

Спасибо, но в этом случае это отличный инструмент. Кроме того, он не разбивает результат на ячейки, но все находится в одной ячейке. Я думаю, что для такого рода вещей я продолжаю использовать лист Gdrive :( – aborruso

0

Начиная с LibreOffice 5.2.2 функция FILTERXML в LibreOffice работает корректно в контексте массива, что позволяет значительно облегчить доступ к результатам массива XPath.

Вы можете создать такую ​​формулу, выбрав, например, A1:A10 и вставьте формулу =FILTERXML(WEBSERVICE("http://www.comune.palermo.it/xmls/VIS_DATASET_AGENZIE.xml"),"/main/DATA_RECORD") в A1 и нажмите CTRL+SHIFT+ENTER.

Каждая ячейка теперь будет содержать другую запись возвращаемого массива XPath. Соответствующий отчет об ошибке можно найти по адресу the LibreOffice bug tracker.


Для других лиц, которые ищут документы XML в LibreOffice Calc. В настоящее время существует другой путь через диалог Data->XML Source, который позволяет выбрать часть документа XML и импортировать его. Для LibreOffice 6.0 также частично выполнена часть, позволяющая импортировать внешние данные и преобразовывать их перед применением к документу. Это может заменить многие варианты использования для WEBSERVICE + FILTERXML.