Regex 如何使用ColdFusion从XML字符串中删除所有多余的空格?
我从一个客户端收到一个XML字符串,格式如下Regex 如何使用ColdFusion从XML字符串中删除所有多余的空格?,regex,coldfusion,Regex,Coldfusion,我从一个客户端收到一个XML字符串,格式如下 <root> <result success="1"/> <userID>12345</userID> <classID>56543</classID> </root> <root><result success="1"/><userID>12345</userID><classID>56
<root>
<result success="1"/>
<userID>12345</userID>
<classID>56543</classID>
</root>
<root><result success="1"/><userID>12345</userID><classID>56543</classID></root>
12345
56543
我需要将这个字符串压缩为以下内容
<root>
<result success="1"/>
<userID>12345</userID>
<classID>56543</classID>
</root>
<root><result success="1"/><userID>12345</userID><classID>56543</classID></root>
1234556543
因此,除了标记内部之外,所有空白都被删除(因此“result”和“success”之间仍然存在空格)
我使用了
replace
语句来删除换行符、回车符等,但是我不能在忽略标记中的空格的情况下删除空格。有没有办法使用正则表达式或其他方法来实现这一点?下面的regx将匹配不在标记内的空格
[\s]+(?![^><]*>)
[\s]+(?![^>)
或
[\s]+(?![^>|简单的正则表达式如何:\s+?
我看到的最简单、有效的解决方案是替换尖括号外侧附近的所有空格:
的\s+
,以及
\s+我没有看到我使用任何正则表达式方法想要的确切结果,我有一种预感,用正则表达式处理XML并不是真正常见的错误
使用这个XSL
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
请参阅演示:工作起来很有魅力。谢谢!如果有人感兴趣,在ColdFusion的上下文中,它的工作原理是这样的…strClean=REReplace(strOriginal,[\s]+(?![^>);我用JavaScript测试了那些regexp,但它们工作不正常。[\s]+(?![^>)
在不应该的地方(从文本内部)剪切空白。另一方面,[\s]+(?![^>|此解决方案非常有效,谢谢。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
xmlOut = XmlTransform(xmlIn, stripSpaceXSL);