在Java中打印XML标记名称和值
我有一个XML文档,我想打印文档中所有标记的标记名和值(叶节点) 例如,对于XML:在Java中打印XML标记名称和值,xml,parsing,tags,Xml,Parsing,Tags,我有一个XML文档,我想打印文档中所有标记的标记名和值(叶节点) 例如,对于XML: <library> <bookrack> <book> <name>Book1</name> <price>$10</price> </book> <book> <name>Book2</name> <
<library>
<bookrack>
<book>
<name>Book1</name>
<price>$10</price>
</book>
<book>
<name>Book2</name>
<price>$15</price>
</book>
</bookrack>
</library>
救命啊 如果可以使用xslt解析xml,那么它就非常简单(输出可以更改为仅使用html的文本,以便能够轻松查看结果)
最低限度的XSLT 1.0方法:
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:output method="text" />
<xsl:template match="*">
<xsl:value-of select="name()" />
<xsl:text>=</xsl:text>
<xsl:value-of select="normalize-space(text())" />
<xsl:text> </xsl:text>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="text()" />
</xsl:stylesheet>
=
给出:
library=
bookrack=
book=
name=Book1
price=$10
book=
name=Book2
price=$15
图书馆=
书架=
书=
name=Book1
价格=$10
书=
name=Book2
价格=$15
此替代模板将更好地处理节点值:
<xsl:template match="*">
<xsl:value-of select="name()" />
<xsl:text>=</xsl:text>
<xsl:if test="normalize-space(text()) != ''">
<xsl:value-of select="text()" />
</xsl:if>
<xsl:text> </xsl:text>
<xsl:apply-templates />
</xsl:template>
=
输出与以前相同,但节点值内的间距将保留。很抱歉回来晚了。。但是我在寻找一个Java的解决方案。。(参见问题标题):)也许我也应该把这个问题标记为“java”。)是的,这些信息从一开始就很有价值。在任何情况下,都可以在Java中应用XSLT,没有问题。如果你想试试那条路,谢谢你的回答!让我看看我是否可以用这个来代替Java程序:)
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:output method="text" />
<xsl:template match="*">
<xsl:value-of select="name()" />
<xsl:text>=</xsl:text>
<xsl:value-of select="normalize-space(text())" />
<xsl:text> </xsl:text>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="text()" />
</xsl:stylesheet>
library=
bookrack=
book=
name=Book1
price=$10
book=
name=Book2
price=$15
<xsl:template match="*">
<xsl:value-of select="name()" />
<xsl:text>=</xsl:text>
<xsl:if test="normalize-space(text()) != ''">
<xsl:value-of select="text()" />
</xsl:if>
<xsl:text> </xsl:text>
<xsl:apply-templates />
</xsl:template>