gpt4 book ai didi

java - 在 Java 中使用数组解析复杂的 XML

转载 作者:行者123 更新时间:2023-12-02 09:46:38 25 4
gpt4 key购买 nike

我有一个从第 3 方收到的复杂 XML 结构。我想解析上面的 XML 文档并使用相应的值创建一个 Map。哪个库可以用来解析复杂的XML

我尝试了 XPath,但是无法获得想要的结果。

<OBJECT TYPE="BookListInterface" REF="OBJECT.BookListInterface">
<Books TYPE="BookArray" length="5">
<Item0 TYPE="BookName" REF="Item0.BookName.1">AA</Item0>
<Item1 TYPE="BookName" REF="Item1.BookName.1">BB</Item1>
<Item2 TYPE="BookName" REF="Item2.BookName.1">CC</Item2>
<Item3 TYPE="BookName" REF="Item3.BookName.1">DD</Item3>
<Item4 TYPE="BookName" REF="Item4.BookName.1">EE</Item4>
<Item5 TYPE="BookName" REF="Item5.BookName.1">FF</Item5>
</Books>
<BookRates TYPE="DoubleArray" length="5">
<Item0 TYPE="Double">10</Item0>
<Item1 TYPE="Double">20</Item1>
<Item2 TYPE="Double">30</Item2>
<Item3 TYPE="Double">40</Item3>
<Item4 TYPE="Double">50</Item4>
<Item5 TYPE="Double">60</Item5>
</BookRates>
</OBJECT>

我想解析上面的 XML 文档并使用相应的值创建一个 Map,即

AA --> 10, 
BB --> 20

等等。我如何在 JAVA 中实现这一点?

最佳答案

应用此 XSLT-1.0 模板,您可以获得想要的输出:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:key name="keys" match="/OBJECT/Books/*" use="substring-after(local-name(),'Item')" />

<xsl:template match="text()" />

<xsl:template match="/OBJECT/BookRates/*">
<xsl:variable name="number" select="substring-after(local-name(),'Item')" />
<!-- Group this output to get a map result -->
<xsl:value-of select="key('keys', $number)/text()" /> <!-- Mapping key -->
<xsl:value-of select="' --> '" />
<xsl:value-of select="text()" /> <!-- Mapping value -->
<xsl:value-of select="'&#xa;'" />
<!-- End of grouping -->
</xsl:template>

</xsl:stylesheet>

其主要功能是将/OBJECT/Books的值映射到/OBJECT/BookRates/的值。这是通过使用 substring-after(local-name(),'Item') 创建键值来实现的。

它的(文本)输出是:

AA --> 10
BB --> 20
CC --> 30
DD --> 40
EE --> 50
FF --> 60

在 Java 中,您可以从结果中提取标记的映射键映射值值。

关于java - 在 Java 中使用数组解析复杂的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56605248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com