gpt4 book ai didi

java - pojo 中存在未知的 XML 文件

转载 作者:行者123 更新时间:2023-11-30 03:45:41 25 4
gpt4 key购买 nike

有没有办法获取未知模式 xml 文件并将 xml 文件中的值、标签等转换为 pojo?我查看了 jaxb,似乎使用它的最佳方法是如果您已经了解 xml 模式。所以基本上,我希望能够解析 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();

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

OTOH,你可以打电话

Element root = doc.getDocumentElement();

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

这仅取决于您对结果数据结构(您所说的 ArrayList)的期望。例如,如果您创建一个通用元素类型 (MyElement),其中包含一个属性映射和另一个子元素映射,则第二个映射必须是

Map<String,List<MyElement>> name2elements

提供重复的元素——这使得访问只出现一次的元素有点尴尬。

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

关于java - pojo 中存在未知的 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25773370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com