通过Java以编程方式将XML文档转换为Excel工作表

通过Java以编程方式将XML文档转换为Excel工作表,java,xml,excel,Java,Xml,Excel,我有一个XML文档,我需要将其转换为Excel工作表,以便数据更直观,而且我还可以向其中添加宏 XML文档相当复杂,它实际上是一个Java应用程序对象,已使用XStream转换为XML 我需要动态地进行解析,其中标记应该是列名,属性应该是列值 如果有人能建议我该怎么做,那将是非常有帮助的 我尝试过使用ApachePOI,但是我不能动态地选择XML元素,不能逐个迭代,基于标记名选择值也不能解决我的问题,因为文档的XML结构会不断变化 提前感谢。我认为ApachePOI是您的最佳选择,但可能与一些X

我有一个XML文档,我需要将其转换为Excel工作表,以便数据更直观,而且我还可以向其中添加宏

XML文档相当复杂,它实际上是一个Java应用程序对象,已使用XStream转换为XML

我需要动态地进行解析,其中标记应该是列名,属性应该是列值

如果有人能建议我该怎么做,那将是非常有帮助的

我尝试过使用ApachePOI,但是我不能动态地选择XML元素,不能逐个迭代,基于标记名选择值也不能解决我的问题,因为文档的XML结构会不断变化


提前感谢。

我认为ApachePOI是您的最佳选择,但可能与一些XML解析算法结合使用。也许您可以尝试首先将所有可能的xml值存储在某个二维数组或列表中。在此之后,您可以对其进行迭代,然后利用ApachePOI

String[][] array = .. //parsed xml

for(String[] row : array){
      createCell();  
      for(String cell : row){
         createRow();
      }
}
我建议结合使用POI(因为它可以读取最新版本的Excel)JAXB和XSD
1.第一步是定义模式定义文件(XSD)并定义所有元素名称(类)及其引用(类属性)。
例如,想象您的XML如下所示:
.
.
2.将每个man1、man2节点想象为一个名为man的类的对象,因此在XSD中定义一个man元素名称并定义其元素。
3.之后,从该xsd生成类,如果您使用的是maven,请执行maven清理安装。
4.将xml解组到生成的类的对象。
5.读取循环中的每个对象,并使用POI打开新的Excel文件,并将读取的数据插入Excel文件
I would suggest a combination of POI(as it can read the latest version of Excel)JAXB and XSD 

 1.First step would be to define a Schema Definition file(XSD) and define all the element names(classes) and its references(class attributes).

For example Imagine your XML like this:

<human>
   <man1>
     <age>
     </age>
   </man1>
   <man2>
     <age>
     </age>
   </man2>
      .
      .
 </human>

 2.Imagine each man1,man2 nodes as objects of a class called man so define a man element name in your XSD and define its elements.  
 3. After that generate the classes from that xsd, do a maven clean install if you are using Maven.
 4. Unmarshall the xml to objects of the generated classes.
 5. Read each of the object in a loop and using POI open a new Excel file and insert the read data into the Excel file