Разбор Java XPAT - PullRequest
       2

Разбор Java XPAT

1 голос
/ 14 ноября 2011

Есть ли способ извлечь из файла XML все не пустые узлы, используя XPath?XML выглядит следующим образом:

<workspace>
<light>
    <activeFlag>true</activeFlag>
    <ambientLight>0.0:0.0:0.0:0.0</ambientLight>
    <diffuseLight>1.0:1.0;1.0:1.0</diffuseLight>
    <specularLight>2.0:2.0:2.0:2.0</specularLight>
    <position>0.1:0.1:0.1:0.1</position>
    <spotDirection>0.2:0.2:0.2:0.2</spotDirection>
    <spotExponent>1.0</spotExponent>
    <spotCutoff>2.0</spotCutoff>
    <constantAttenuation>3.0</constantAttenuation>
    <linearAtenuation>4.0</linearAtenuation>
    <quadricAttenuation>5.0</quadricAttenuation>
</light>

<camera>
    <activeFlag>true</activeFlag>
    <position>2:2:2</position>
    <normal>1:1:1</normal>
    <direction>0:0:0</direction>
</camera>

<object>
    <material>lemn</material>
    <Lu>1</Lu>
    <Lv>2</Lv>
    <unit>metric</unit>
    <tip>tip</tip>
    <origin>1:1:1</origin>
    <normal>2:2:2</normal>
    <parent>
        <object>null</object>
    </parent>
    <leafs>
        <object>null</object>
    </leafs>
</object>

После каждого тега парсер «видит» еще один пустой узел, который мне не нужен.

Ответы [ 3 ]

2 голосов
/ 14 ноября 2011

Полагаю, вам нужны все узлы элементов, которые имеют непосредственный дочерний текстовый узел, который не состоит исключительно из пробелов:

//*[string-length(normalize-space(text())) > 0]
0 голосов
/ 15 ноября 2011

Вы хотите :

//*[normalize-space()]

Выражение :

//*[string-length(normalize-space(text())) > 0]

неправильный ответ . Он выбирает все элементы в документе, чей текст первого дочернего текстового узла не является только пробелом.

Следовательно, это не будет выбирать :

<p><b>Hello </b><i>World!</i></p>

хотя этот абзац содержит довольно много текста ...

0 голосов
/ 14 ноября 2011

Если вы используете XSLT, используйте <xsl:strip-space elements="*"/>.Если нет, это зависит от того, какую технологию вы используете (например, вы не сказали нам)DOM, JDOM и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...