2013-03-04 2 views
0

저는 Linux 사용자가 아니며 큰 문제가 있습니다. XML 파일 exept 태그의 모든 문자를 계산해야합니다.XML에서 <> 태그 사이의 문자 수를 계산합니다.

예를

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

내 출력은 4 또는 텍스트를 반환해야합니다. 나는 xmlstarlet에게

을 programm을

파악하려고하지만 난 후에도 읽을 매뉴얼을 사용하지 못할. 어떤 조언을

감사

답변

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

즉 귀하의 예제에서 7 될 수 있도록 ( 공백을 포함하여 당신에게 루트 요소 내에서 텍스트 내용의 문자의 총 수를 제공해야합니다 - 줄 바꿈 공간, T, , e, x, t, 개행). 이것은 단지 텍스트 노드의 문자 것, 그래서 의견이나 처리 지침, 즉 포함하지 않을

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

-B` 공백을 제거 할 것`당신에게 18

+1

'--noblanks'의 길이를 제공하거나 것 노드 만 – npostavs

+0

완벽하게 작동합니다. 수식의 일부분 인 "string-length (/ *)"에 대해 무엇을 찾을 수 있는지 말해 줄 수 있습니까? Linux 또는 Starlet 자체에 내장 된 일부 기능입니까? – Glorifind

+0

@Glorifind 그것은 [XPath] (http://www.w3.org/TR/xpath) 표현입니다. '/ *'는 루트 요소 노드 (이름이 뭐든간에)를 선택하고,'string-length'는 이것을 문자열로 변환합니다 (요소 노드의 경우에는 모든 하위 노드 노드를 트리)를 검색하고 문자열에 포함 된 문자 수를 반환합니다. –

관련 문제