Я использую XPath
, чтобы запросить мой XML-file
, который имеет на данный момент около 100KB
.Android - XPath оценить очень медленно
Я выполняю итерацию массива и запрос для каждого значения в списке.
К сожалению, один запрос занимает около 3-4 секунд под отладчиком и немного меньше при отключенном отладчике.
Любые идеи, почему это так медленно? Для тестирования я использую Galaxy S2
.
Вот мой код:
XPath xpath = XPathFactory.newInstance().newXPath();
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
builderFactory.setNamespaceAware(true);
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document document = builder.parse(new File(file_on_internal_sd_url)));
int size = mPrefs.getInt("no_ids", 0);
for(int i=0;i<size;i++) {
String id= mPrefs.getString("id_" + i, null);
String expression = "/tag1/tag2[@id = '" + id+ "']";
NodeList nodes = (NodeList) xpath.evaluate(expression, document, XPathConstants.NODESET);
if(nodes.getLength()>0) {
myElements.add((Element)nodes.item(0));
}
}
Update
Когда я оставить из XPathConstants.NODESET
evalution делается в кратчайшие сроки, но не получить NodeList
. Он возвращает пустую строку ...
Является ли запрос _single_ принимать 3-4 мса или все те, в этом цикле вместе ? Как выглядит ваш документ? –
Один запрос занимает около 3-4 секунд (!). В моем документе есть один корневой узел и множество дочерних узлов. Нет внуков. – Ron
Ronvcan вы добавляете тег vtd-xml к этому вопросу? –