我正在将树结构序列化为XML数据。 我的树看起来像
Company
Department
Employee
Employee
我想要的根节点是Company
,因此XML看起来像
<?xml version="1.0" encoding="UTF-8"?>
<Company>
<Department>
<Employee>
...
</Employee>
</Department>
</Company>
看完这些例子后,我决定把它写成这样的
public void writeNodes(Element root, NodeBase node) throws XMLStreamException
{
Element elmt = root.addElement(node.getName());
for (NodeBase child : node.getChildren())
{
writeNodes(child);
}
}
public void makeXML(NodeCompany root, String filename)
{
try {
document = DocumentHelper.createDocument();
writeNodes(???, root);
writeFile(document, filename);
}
catch (Exception e)
{
e.printStackTrace();
}
}
我希望将我的根节点用作根节点,但我不想编写重复的代码来将根节点与其子节点分开处理。
由于我的树中只有一个公司节点,我可以在我的writeNodes
方法中执行显式检查以跳过任何公司节点,但这看起来不太好。
有没有办法在不复制任何代码的情况下完成此代码?
答案 0 :(得分:0)
HY,
对我来说,方法writeNodes是不必要的,你可以这样做:
public void makeXML(Element rootElement, String filename) {
try {
//you must detach it for you can add it in the new document after
Element rootElementCopied = (Element) rootElement.clone();
Document document = DocumentHelper.createDocument();
document.add(rootElementCopied);
writeFile(document, filename);
}
catch (Exception e){
e.printStackTrace();
}
}