Я пытаюсь манипулировать данными XML с помощью XMLStarlet для целей перевода, как это было указано в https://superuser.com/questions/598910/translate-text-nodes-of-graphml-xml-cas, но хотя узлы я пытаюсь прочитать возвращены пробелы / новые строки. Пример XML можно найти в другом вопросе, а вызов программы выглядит следующим образом:

xml sel --noblanks --text --template --nl --value-of "//y:NodeLabel" --value-of "//y:EdgeLabel" my.graphml

в результате чего

...
The node's text
...
          The edge's text
...

(... представляет пустую строку)

Я хотел бы объяснить, что происходит, и следует ли ожидать результата или это вызвано XMLStarlet. Был бы признателен фиксированный вызов программы, но, конечно, были бы приемлемы и альтернативные программы или, если необходимо, фильтрация пустых строк (grep/sed/awk, CMD).

3 ответа3

2
xmlstarlet sel -T -t -v "//node/item" file.xml

и выводит содержимое

<node><item>content</item></node>

как текст без дополнительных пробелов.

0

Проблема в том, что вы добавили --nl в свою команду. Из документов:

-n или --nl - вывести новую строку

Это добавит новую строку к каждому печатному элементу.

0

Я до сих пор не знаю, но я решил эту задачу с помощью Python и lxml, которые не захватывают пробелы в элементе text узла.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .