Java XSLT可以';不处理实体
我有一个XML字符串,我正在尝试删除所有空的XML标记和空白。 为此,我使用以下XSL表:Java XSLT可以';不处理实体,java,xml,xslt,Java,Xml,Xslt,我有一个XML字符串,我正在尝试删除所有空的XML标记和空白。 为此,我使用以下XSL表: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:strip-space elements="*"/> <xsl:template match="node()|@*"> <xsl:copy> <xsl:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[not(*) and not(text()[normalize-space()])]"/>
</xsl:stylesheet>
我的输出是:
<?xml version="1.0" encoding="UTF-8"?><main><test>123öü aksdjf0192301ß09aasdfg 0</test><test>12031</test></main>
123öaksdjf0192301ß09aasdfg 012031
这正是我的预期结果,但当我向输入字符串添加一个实体(例如“&”)时,转换失败
错误提示:实体名称必须紧跟实体引用中的“&”。
我怎样才能解决这个问题?为什么要实现这样的功能,XSL是正确的吗
我预计这一产出:
<?xml version="1.0" encoding="UTF-8"?><main><test>123öü aksdjf0192301ß09aasdfg 0</test><test>120>&& | 31</test></main>
123öaksdjf0192301ß09aasdfg 0120>&&&124; 31
通过此输入:
String s = "<main> <test>123öü aksdjf0192301ß09aasdfg 0 >&& | </test> <test> </test> <test>120>&& | 31</test>"
+ "\n" +
"<test>" + "</test>" + "</main>";
String s=“123öaksdjf0192301ß09aasdfg 0>&&&&&124; 120>&&124; 31”
+“\n”+
"" + "" + "";
符号(&
)本身不是合法字符,您必须将其编码为&代码>
从:
符号(&)和左尖括号(符号(&
)本身不是合法字符,您必须将其编码为&;
)
从:
符号(&)和左尖括号(当您添加&
时,编译器会认为您正在尝试引用实体。如果您只想添加字符,那么只需添加&
不要尝试使用字符串连接构建XML,请使用JDOM或DOM或类似工具,这样您就不会遇到格式错误的XML问题,从而在应用程序所在的工具链中导致错误应用程序需要XML。当您添加&
时,编译器会认为您正在尝试引用实体。如果您只想添加字符,则只需添加&
不要尝试使用字符串连接构建XML,请使用JDOM或DOM或类似工具,这样您就不会遇到格式错误的XML问题,从而在以后的应用程序中导致错误应用程序需要XML的l链。谢谢。您对创建XML字符串后进行编码有何建议?谢谢。您对创建XML字符串后进行编码有何建议?
<?xml version="1.0" encoding="UTF-8"?><main><test>123öü aksdjf0192301ß09aasdfg 0</test><test>120>&& | 31</test></main>
String s = "<main> <test>123öü aksdjf0192301ß09aasdfg 0 >&& | </test> <test> </test> <test>120>&& | 31</test>"
+ "\n" +
"<test>" + "</test>" + "</main>";