当前位置: 首页 > 知识库问答 >
问题:

JAXB解组xml@XmlValue和@XmlElement

芮瑾瑜
2023-03-14

嗨,我正在解组一个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的构建方式,因此我希望有人能给出答案。非常感谢。

共有1个答案

白弘伟
2023-03-14

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

>

  • 为<code>XML

    会是这样的(但可能你需要手动修改一些细节,在你的XML结构中似乎你可以创建属性类包装几个

    <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>
    

    将其放在项目文件夹中。

    使用Unmarshaller从XML文件填充自动生成的类:

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

    就这样…JaxB将负责类、属性、填充、写入/读取xml。。。

  •  类似资料:
    • 是否有可能有一个使用值 AND 元素呈现的 JAXB 元素? 我正在尝试渲染类似下面的内容: 它甚至可能不是有效的XML,但不幸的是,我试图渲染的东西需要它,而不是可选的。 如果有一个值和元素,则会给出一个。

    • 我正在尝试创建一个可以同时包含元素和值的java/jaxb类。 我想在A类的列表中读取一个类的属性,并作为A类本身的值输出。 这是XML: 我必须阅读: 并生产: 这是我的错误类-工作正常: 我的设备类别: Jaxb 抱怨我不能在同一类中同时拥有 xml 元素(错误 )和 xml 值 如何正确建模/注释此内容,以允许我读取 error xml 标记的属性并将其生成为设备标记的值?

    • 我在这里看到了一个类似的问题,但它并没有帮助我解决这个问题,所以我在这里发布我的问题,看看是否有人可以修改我的代码使其工作。 问:如何访问混合内容字符串值并将其保存在 setPhrase(字符串值)方法中? 标题.xml: 标题.java: 在使用JAXB解组和编组之后,我能够将所有内容转换为和对象并保存为相应的内容,但实际短语“Hello World”除外。我知道我必须为这个复杂的元素使用某种@

    • 我有下一个html,我想解析它: 我有下一节课: 和: 现在,我还需要跨度的值(“bla-bla”)。因此,我将添加到类中: 位它给了我下一个错误: 我尝试使用@XMLMixed,但是没有成功。我会很高兴,例如代码的例子。谢了。

    • 问题内容: 我有下一个html,我想解析: 我下一堂课: 和: 现在,我还需要span的值(“ bla bla”)。所以我添加到类中: 有点给我下一个错误: 我尝试使用@XMLMixed,但没有成功。我会很高兴例如代码示例。谢谢。 问题答案: 更新 可以同时具有文本和元素的子注释的任何元素都称为混合内容。在JAXB中,这对应于注释。 可以在自家的集合属性使用(见原来的答复),或组合,或。如果该元素

    • 继JAXB和复合模式之后,我设法映射: 但我想绘制: 我的JAXB类层次结构如下: 有几种类型的查询: 复合词(和/或)非常相似: 和封闭bean: JAXB不允许我只在上映射。为什么以及有什么替代方案?