我有一个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>
Run Code Online (Sandbox Code Playgroud)
我的输入String XML例如:
String s = "<main> <test>123öü aksdjf0192301ß09aasdfg 0</test> <test> </test> <test>12031</test>"
+ "\n" +
"<test>" + "</test>" + "</main>";
Run Code Online (Sandbox Code Playgroud)
对于XSL转换,我使用以下Java代码:
StringReader reader = new StringReader(xmlContent);
StringWriter writer = new StringWriter();
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer(new javax.xml.transform.stream.StreamSource(
"style.xsl"));
transformer.transform(new javax.xml.transform.stream.StreamSource(reader),
new javax.xml.transform.stream.StreamResult(writer));
String result = writer.toString();
Run Code Online (Sandbox Code Playgroud)
我的输出是:
<?xml version="1.0" encoding="UTF-8"?><main><test>123öü aksdjf0192301ß09aasdfg 0</test><test>12031</test></main>
Run Code Online (Sandbox Code Playgroud)
这正是我的预期结果,但是当我在输入字符串中添加一个实例,例如'&'时,转换失败.
出现错误: 实体名称必须紧跟实体引用中的"&".
我该如何解决这个问题?XSL是否正确实现这样的功能?
我期待这个输出:
<?xml version="1.0" encoding="UTF-8"?><main><test>123öü aksdjf0192301ß09aasdfg 0</test><test>120>&& | 31</test></main>
Run Code Online (Sandbox Code Playgroud)
有了这个输入:
String s = "<main> <test>123öü aksdjf0192301ß09aasdfg 0 >&& | </test> <test> </test> <test>120>&& | 31</test>"
+ "\n" +
"<test>" + "</test>" + "</main>";
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
117 次 |
最近记录: |