Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java XSLT可以';不处理实体_Java_Xml_Xslt - Fatal编程技术网

Java XSLT可以';不处理实体

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:

我有一个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: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>";