您可以將對象轉換爲org.w3c.dom.Document中有:
JAXBContext contextJaxb = JAXBContext.newInstance(xml.getClass());
Marshaller marshaller = contextJaxb.createMarshaller();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
Document doc = dbf.newDocumentBuilder().newDocument();
marshaller.marshal(xml, doc);
然後用搜索一個對象是:
private Element getFirstElementsByTagName(final String name, final Namespace nameSpace, final Element root) {
List<Element> list = new ArrayList<Element>(root.getChildren(name, nameSpace));
Iterator<Element> iterator = root.getChildren().iterator();
while(iterator.hasNext() && list.isEmpty()) {
Element next = iterator.next();
Element element = this.getFirstElementsByTagName(name, nameSpace, next);
if(element != null) {
list.add(element);
}
}
if(!list.isEmpty()) {
return list.get(0);
}
return null;
}
爲什麼不直接使用的樣本數據,而不是嘲諷? – lexicore
你在大學裏沒有專心地聽:-)對於(平均)長度爲n的k個層次的嵌套循環,你的確有可怕的O(n^k)。但是,要定位k個水平(平均)長度爲n的元素,您只需要O(k * n/2)。您不需要檢查所有可能的長度爲k的XPath以查找級別爲k的單個XPath目標... – laune
讓我印象深刻,因爲我可以寫更好的東西。也許我現在需要專注於獲得新合同。我在一艘沉沒的船上。 – user447607