Я разбираю XML-документ в своей собственной структуре, но создание его очень медленное для больших входов - есть ли лучший способ сделать это?медленное построение древовидной структуры из XML
public static DomTree<String> createTreeInstance(String path)
throws ParserConfigurationException, SAXException, IOException {
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder db = docBuilderFactory.newDocumentBuilder();
File f = new File(path);
Document doc = db.parse(f);
Node node = doc.getDocumentElement();
DomTree<String> tree = new DomTree<String>(node);
return tree;
}
Вот мой DomTree конструктор:
/**
* Recursively builds a tree structure from a DOM object.
* @param root
*/
public DomTree(Node root){
node = root;
NodeList children = root.getChildNodes();
DomTree<String> child = null;
for(int i = 0; i < children.getLength(); i++){
child = new DomTree<String>(children.item(i));
if (children.item(i).getNodeType() != Node.TEXT_NODE){
super.children.add(child);
}
}
}
UPDATE:
Я протестированный метод createTreeInstance() с помощью XML-файл 100MB:
- Создания docBuilderFactory .. . Done [3ms]
- Создание docBuilder ... Совершено [21ms]
- разбора файл ... Готово [5646ms]
- getDocumentElement ... Готов [1мс]
- создание DomTree ... Готово [17076ms]
UPDATE:
Как предлагает Джон Доу ниже, может быть более целесообразным использовать SAX - я никогда раньше не использовал SAX, так что есть хороший способ конвертировать то, что я должен использовать SAX?
У вас есть пример? – Robert