我有一个通过基于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>
答案 0 :(得分:0)
在使用XPath并检索其值的任何地方,使用normalize-space(YOUREXPR)
,其中YOUREXPR
是当前表达式返回空格的任何内容。
它将消除尾随和前导空格,并将折叠任何重复的空格。
或者,因为您说&#34;如果xml上的任何节点包含空格,则进程将挂起或出错。&#34; ,您可以使用{完全删除所有空格{1}},将在translate(YOUREXPR, ' ', '')
中转为Everyday Italian
。
如果您还想删除换行符和标签页,可以使用
EverydayItalian
更新:根据您的评论,您似乎确实希望从过多的空间中清除文件。在这种情况下,您应该使用XSLT。以下内容将创建文件的副本,文本节点和属性节点中的所有空格都被删除(未经测试,但有效,如果您不熟悉XSLT,我建议您通过任何一个教程或书籍阅读它):
translate(YOUREXPR, ' 	

', '')