gpt4 book ai didi

xml - xpath:修剪节点中的空格

转载 作者:行者123 更新时间:2023-12-03 16:29:14 25 4
gpt4 key购买 nike

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

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

因此,如果我有此示例,如何消除文本节点周围的空格?

值得一提的是,此xpath应该是“动态的”,因此,如果xml更改,它仍然会占用这些空间。

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

最佳答案

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

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

另外,由于您说过“如果xml上的任何节点包含空格,进程将挂起或出错。”,则可以使用translate(YOUREXPR, ' ', '')完全删除所有空格,这将在Everyday Italian中将EverydayItalian变为。

如果您还想消除换行符和制表符,则可以使用

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




更新:根据您的评论,看来您实际上是想清除多余空间的文件。在这种情况下,您应该使用XSLT。类似于以下内容的文件将创建一个文件副本,其中文本节点和属性节点中的所有多余空格都将被删除(未试用,但有效,如果您是XSLT的新手,我建议您通过许多教程或书籍中的任何内容进行阅读):

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">

<xsl:strip-space elements="*"/>

<xsl:template match="node()">
<xsl:copy>
<xsl:apply-templates select="node() | @*"/>
</xsl:copy>
</xsl:template>

<xsl:template match="@*">
<xsl:attribute name="{local-name()}" namespace="{namespace-uri()}">
<xsl:value-of select="normalize-space(.)" />
</xsl:attribute>
</xsl:template>

<xsl:template match="text()">
<xsl:value-of select="normalize-space(.)" />
</xsl:template>
</xsl:template>

关于xml - xpath:修剪节点中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32728133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com