2013-03-04 2 views
0

Я не опытный пользователь Linux и имею большую проблему. Мне нужно пересчитать все символы в XML-файлах, отличных от тегов.кол-во символов между <> тегами в XML

, например

<node> 
<node1>Text</node> 
</node> 

Мой вывод должен возвращать 4 или текст. Я пытаюсь выяснить

XMLStarlet

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

Спасибо за любые советы

ответ

1
xml sel -t -v 'string-length(/*)' file.xml 

должно дать вам общее количество символов текстового контента в пределах корневого элемента (включая пробелы, так что будет 7 в вашем примере - перевод строки, пространство, T , e, x, t, newline). Это было бы только символы в текстовых узлов, поэтому не будет включать в себя комментарии или инструкции по обработке, т.е.

<foo>This is a <!-- simple --> example</foo> 

даст вам длину 18

+1

'--noblanks' или' -B' бы удалить пробелы только узлы – npostavs

+0

Спасибо, что работает отлично. Можете ли вы сказать мне, где я могу найти что-нибудь о '' string-length (/ *) ''части формулы? Это какая-то функция, встроенная в Linux или Starlet? – Glorifind

+0

@Glorifind это выражение [XPath] (http://www.w3.org/TR/xpath). '/ *' выбирает узел корневого элемента (независимо от того, что он назван), 'string-length' преобразует его в строку (которая в случае узла элемента определяется как объединяющая все текстовые узлы потомков на всех уровнях в дерево) и возвращает количество символов, которые содержит строка. –

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