Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.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 JAXB将XML解组为HashMap_Java_Xml_Jaxb - Fatal编程技术网

Java JAXB将XML解组为HashMap

Java JAXB将XML解组为HashMap,java,xml,jaxb,Java,Xml,Jaxb,我有一个复杂的XML结构,如下所示,需要对其进行解组: <abc> <pqr> <attribute>name</attribute> <entry> <priorityKey> <class>123</class> <reason>abc</reason>

我有一个复杂的XML结构,如下所示,需要对其进行解组:

<abc>
      <pqr>
        <attribute>name</attribute>
        <entry>
          <priorityKey>
            <class>123</class>
            <reason>abc</reason>
          </prioritykey>
          <priority> 1 </priority>
        </entry>

        <entry>
          <prioritykey>
            <class>456</class>
            <reason>abc1</reason>
          </prioritykey>
          <priority>2</priority>
        </entry>
      </pqr>

      <pqr>
       '''
       '''
      </pqr>
    </abc>

名称
123
abc
1.
456
abc1
2.
'''
'''
abc是根节点。它可以有多个pqr元素。每个pqr元素都有一个属性节点和多个条目节点。所以我相信它将是HashMap(entry,attribute)类型

每个条目依次具有prioritykeypriority,我相信这将是HashMap(prioritykey,priority)类型


需要解组此xml,但不了解如何配置XMLAdapter此处,首先创建契约。我创建了一个作为我学习过程的一部分


将其复制并保存到
fileName.xsd
文件中。 现在,生成JAXB类或工件。如果您使用的是IDE,那么这很简单。单击
fileName.xsd
文件,您应该可以获得一些生成JAXB工件的选项。否则,您可以始终使用jaxb下载中的
lib
present中的
jaxb xjc.jar
present

相同的命令-
java-jar jaxb-xjc.jar fileName.xsd


由于工件已经就位,您可以使用它们来解组所讨论的
xml
内容。

为什么要使用HashMap?它不能是一个包含列表/条目集的类吗?基本上我认为它是一个类结构,即Abc有Pqr列表,每个Pqr有一个条目列表->条目有属性->优先级和类优先级键->有类和原因属性。结构需要作为()对进行访问。您可以在这里使用stax解析器。属性值将相同。输入键将不同。“名称”的两个输入对象不会相同value@AshishPatil它是一个配置文件,只需要通过JAXB进行处理。。。
<xs:element name="abc" type="abcType" />

<xs:complexType name="abcType">
    <xs:sequence>
        <xs:element name="pqr" type="pqrType" minOccurs="1"
            maxOccurs="unbounded" />
    </xs:sequence>
</xs:complexType>
<xs:complexType name="pqrType">
    <xs:sequence>
        <xs:element name="attribute" type="xs:string" minOccurs="1"
            maxOccurs="1" />
        <xs:element name="entry" type="entryType" minOccurs="1"
            maxOccurs="unbounded" />
    </xs:sequence>
</xs:complexType>

<xs:complexType name="entryType" >
    <xs:sequence>
        <xs:element name="priorityKey" type="priorityKeyType"
            minOccurs="1" maxOccurs="1" />
        <xs:element name="priority" type="xs:int" minOccurs="1"
            maxOccurs="1" />
    </xs:sequence>
</xs:complexType>
<xs:complexType name="priorityKeyType">
    <xs:sequence>
        <xs:element name="class" type="xs:int" minOccurs="1"
            maxOccurs="1" />
        <xs:element name="reason" type="xs:string" minOccurs="1"
            maxOccurs="1" />
    </xs:sequence>
</xs:complexType>