gpt4 book ai didi

java - JAXB 解码 xml @XmlValue 和 @XmlElement

转载 作者:行者123 更新时间:2023-11-30 08:42:58 27 4
gpt4 key购买 nike

您好,我正在解码一个 XML 文件,该文件的标签可以包含一个值或一个元素列表。我想知道解码这种 XML 的最佳方法是什么。示例:

<attributes>
<attribute>value1</attribute>
<attribute>value2</attribute>
<attribute>value3</attribute>
<attribute>value4</attribute>
<attribute>
<value>value11</value>
<value>value12</value>
<value>value13</value>
<value>value14</value>
<value>value15</value>
</attribute>
<attribute>value5</attribute>
<attribute>value6</attribute>
</attributes>

我无法更改 XML 的构建方式,因此我希望有人能给出答案。谢谢。

最佳答案

使用 JaxB 读写 xml 的基本步骤/ Unmarshaller XSD

  • 创建一个有效 XSD你的文件 XML结构。 Find here an online generator.

    会是这样的(但也许你需要手动修改一些细节,在你的 XML 结构中你似乎可以创建 Attribute 类来包装几个 <attribute> 但我不确定你是否可以拥有多个 <attributes> 标签):

    <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="attributes">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="attribute" maxOccurs="unbounded" minOccurs="0">
    <xs:complexType mixed="true">
    <xs:sequence>
    <xs:element type="xs:string" name="value" maxOccurs="unbounded" minOccurs="0"/>
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    </xs:schema>
  • 将它放在您的项目文件夹中。

  • 右键单击 XSD文件和 auto-generate JAXB classes .
  • 使用 Unmarshaller 从 XML 文件填充自动生成的类:

    Unmarshaller u = jc.createUnmarshaller();
    Attributes attributes = (Attributes) u.unmarshal( new FileInputStream( "yourFile.xml" ) );

就是这样...JaxB 将处理类、属性、填充、写入/读取 xml...

关于java - JAXB 解码 xml @XmlValue 和 @XmlElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34392270/

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