gpt4 book ai didi

java - Java中解析XML的高效方法

转载 作者:行者123 更新时间:2023-12-01 06:57:53 26 4
gpt4 key购买 nike

我必须解析具有以下结构的 XML 文件:

<root>
<object_1>
<pro1> abc </pro1>
<pro2> pqr </pro2>
<pro3> xyz </pro3>

<children>
<object_a>
<pro1> abc </pro1>
<pro2> pqr </pro2>
<pro3> xyz </pro3>

<children>
.
.
.
</children>
</object_a>
</children>
</object_1>
<object_2>
.
.
.
</object_n>
</root>

目的是解析这个多级嵌套。 Java 中定义了一些类。

Class Object_1
Class Object_2
.
.
.
Class Object_N

具有各自的属性。

以下代码对我有用,但这不是最好的方法。

File file = new File(fileName);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(file);
doc.getDocumentElement().normalize();

if(doc ==null) return;

Node node = doc.getFirstChild();

NodeList lst = node.getChildNodes();
Node children = null ;

int len = lst.getLength();
for(int index=0;index<len;index++)
{
Node child = lst.item(index);
String name = child.getNodeName();
if(name=="Name")
name = child.getNodeValue();
else if(name=="Comment")
comment = child.getNodeValue());
else if(name=="children")
children = child;
}

if(children==null) return;

lst = children.getChildNodes();
len = lst.getLength();
Class<?> obj=null;
AbsModel model = null;
for(int index=0;index<len;index++)
{
Node childNode = lst.item(index);
String modelName = childNode.getNodeName();
try {
obj = Class.forName(modelName);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
if(obj!=null)
model = (AbsModel) obj.newInstance();
else
model = new GenericModel();

model.restoreDefaultPropFromXML(childNode);
addChild(model);
}
}

有没有更好的方法来解析此 XML。

最佳答案

考虑使用JAXB ,它从版本 6 开始成为 Java 的一部分。您应该能够将 XML 文件解析(“解码”)到您自己的类中,几乎不需要任何代码,只需添加一些注释来明确对象结构和 XML 结构之间的映射。

关于java - Java中解析XML的高效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7329520/

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