xpath:修剪节点中的空格

时间:2015-09-22 22:36:48

标签: xml xpath xml-parsing xpath-1.0

我有一个通过基于java的sistem处理的xml。

如果xml上的任何节点包含空格,则进程将挂起或出错。

所以,如果我有这个例子,我怎么能消除文本节点周围的空间?

重要的是要提到这个xpath应该是“dinamic”,所以如果xml改变了,它仍然会捕获那些空格。

 <bookstore>
    <book category="cooking">
        <title lang="en"> Everyday Italian</title>
        <author>Giada De Laurentiis </author>
        <year> 2005 </year>
    </book>
</bookstore>

1 个答案:

答案 0 :(得分:0)

在使用XPath并检索其值的任何地方,使用normalize-space(YOUREXPR),其中YOUREXPR是当前表达式返回空格的任何内容。

它将消除尾随和前导空格,并将折叠任何重复的空格。

或者,因为您说&#34;如果xml上的任何节点包含空格,则进程将挂起或出错。&#34; ,您可以使用{完全删除所有空格{1}},将在translate(YOUREXPR, ' ', '')中转为Everyday Italian

如果您还想删除换行符和标签页,可以使用

EverydayItalian

更新:根据您的评论,您似乎确实希望从过多的空间中清除文件。在这种情况下,您应该使用XSLT。以下内容将创建文件的副本,文本节点和属性节点中的所有空格都被删除(未经测试,但有效,如果您不熟悉XSLT,我建议您通过任何一个教程或书籍阅读它):

translate(YOUREXPR, ' &#x9;&#xA;&#xD;', '')