Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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中打印XML标记名称和值_Xml_Parsing_Tags - Fatal编程技术网

在Java中打印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> <

我有一个XML文档,我想打印文档中所有标记的标记名和值(叶节点)

例如,对于XML:

<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>&#10;</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>&#10;</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>&#10;</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>&#10;</xsl:text>
  <xsl:apply-templates />
</xsl:template>