Regex 如何使用ColdFusion从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

我从一个客户端收到一个XML字符串,格式如下

<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);