将未知的XML文件导入pojo

有没有办法获取未知的架构xml文件并将值,标签等从xml文件转换为pojo? 我看了jaxb,看起来最好的方法就是你已经知道了xml架构。 所以基本上,我希望能够通过使用arraylist解析xml中的标记,将每个标记放入自己的对象中。 我还没有完全理解jaxb可以或者有更好的工具可以做到这一点,还是实现起来太难了?

希望这有助于您了解您的情况!

public static void dumpAllNodes( String path ) throws Exception { DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document doc = parser.parse(new File(path)); NodeList nodes = doc.getElementsByTagNameNS( "*", "*" ); for( int i = 0; i < nodes.getLength(); i++ ){ Node node = nodes.item( i ); System.out.println( node.getNodeType() + " " + node.getNodeName() ); } } 

NodeList节点按文档顺序(开始标记)包含所有元素节点。 因此,元素中包含的元素将在该列表中,都是相同的。 要获取节点的属性,请调用

 NamedNodeMap map = node.getAttributes(); 

节点的文本内容可用

 String text = node.getTextContent(); 

但请注意,调用this会返回子树的所有元素中的文本

OTOH,你可以打电话

 Element root = doc.getDocumentElement(); 

获取根元素,然后通过调用Element.getChildNodes()递归地下降树,并逐个处理节点(Element,Attr,Text,...)。 另请注意, Node.getParentNode()返回父节点,因此您可以通过重复对root的调用,甚至从平面列表为每个节点构造XPath。

它只取决于您对结果数据结构的期望(您称之为ArrayList)。 例如,如果您创建一个包含一个属性映射的通用元素类型(MyElement),另一个用于子元素,则第二个映射必须是

 Map> name2elements 

提供重复的元素 - 这使得元素的访问只发生一次有点尴尬。

我希望我已经说明了通用XML解析的问题,这不是JAXB可以帮助您的任务。