将XML转换为使用Java的自定义Excel

我需要build议如何将XML转换为使用Java的自定义Excel我需要使用自定义布局将XML转换为Excel。 我发现一个兴趣点 ,它似乎可以帮助完成这个任务。 但是我没有这方面的经验,因为我知道POI在像DOM这样的内存树中工作得最好。 我开始分析我的XML(我可以展示一小部分,它真的很大,深入)

<advantage> <companies> <name>Name1</name> <name>Name2</name> <name>Name3</name> <name>Name4</name> <name>Name6</name> </companies> <companyPreCode> <PreCode>1</PreCode> <PreCode>2</PreCode> <PreCode>3</PreCode> <PreCode>4</PreCode> <PreCode>6</PreCode> </companyPreCode> 

通过使用DOM,就像我在一个这样的在线教程中看到的

  Document xmlDoc = getDocument("./src/xmlForTest.xml"); xmlDoc.getDocumentElement().normalize(); System.out.println("Root element of the doc is :\" "+ xmlDoc.getDocumentElement().getNodeName() + "\""); NodeList listOfAdvantage = xmlDoc.getElementsByTagName("advantage"); //first we need to find total number of Advantage blocks int totalAdvantage = listOfAdvantage.getLength(); System.out.println("Total no of advantage : " + totalAdvantage); for (int s = 0; s < listOfAdvantage.getLength(); s++) //get into advantage { Node AdvantageNode = listOfAdvantage.item(s); System.out.println("advantage number : " + s); if (AdvantageNode.getNodeType() == Node.ELEMENT_NODE) { Element AdvantageElement = (Element) AdvantageNode; NodeList CompanyList = AdvantageElement.getElementsByTagName("companies"); // find node companies System.out.println("companies number : " + CompanyList.getLength()); for(int cl = 0; cl < CompanyList.getLength(); cl++) { NodeList CompanyNameList = CompanyList.item(cl).getChildNodes(); //AdvantageElement.getElementsByTagName("name"); for (int j = 0; j < CompanyNameList.getLength(); j++) { Node childNode = CompanyNameList.item(j); if ("name".equals(childNode.getNodeName())) { for (int nl = 0; nl < CompanyNameList.getLength(); nl++) { Element CompanyNameElement = (Element) CompanyNameList.item(nl); NodeList textFNList = CompanyNameElement.getChildNodes(); System.out.println("Company: " + nl + " :" + (textFNList.item(0)).getNodeValue().trim()); CompaniesNames.add((textFNList.item(0)).getNodeValue().trim()); } } } } }// end of if clause }// end of for loop with s var 

现在我有几个问题

  1. 如何使这个parsing更容易? 我的文件很大,在一些地方,我有不同的东西,如名称可以为公司,产品或一个人相同的标签。 但是,我很难像我一样一个一个地检索它
  2. 如何将这些数据提供给POI以便我可以开始使用这个POI来构build我的Excel文件? 因为现在我有一组ArrayLists和来自不同标签的数据,我只是不知道接下来需要什么