2016-05-18 3 views
0

Я запрашиваю xml, используя Xpath и JavaScript. Запрос получает результаты, но damm slow, и для выполнения требуется возраст.Xpath медленный запрос запроса

var doc = $.parseXML(xml); 
doc.xpath("(//NAMESET| //NAMESETFROMDATA) [HANDLE/STRINGVALUE = '" + handle+ "']"); 

where handle = NameSpaceAssoc::HighlightSet 

Может ли кто-нибудь указать мне, что он делает, и любой указатель, чтобы улучшить его производительность?

Считайте себя новичком в JavaScript и xml.

+0

Вы вопрос неясен. Что означает «медленный» и «требует времени для выполнения»? Добавьте код и создайте демоверсию, чтобы показать нам, что произойдет. – Mohammad

+0

Отредактировано решение – Joe

+0

Добавьте свою разметку, чтобы проверить ее. – Mohammad

ответ

0

Если вы хотите использовать xpath для выбора элементов в javascript, следует использовать метод evaluate(). Для лучшего понимания См. this.

Чтобы выбрать элемент по evaluate(), вы должны написать имя тегов в нижнем регистре в списке path, потому что браузер конвертирует каждый прописный буквенный текст в тег и атрибут в нижний регистр. Для лучшего понимания См. this.

var document = "Your xml document"; 
var handle = "NameSpaceAssoc::HighlightSet"; 
var path = "(//objectset | //objectsetfromdata) [handle/stringvalue = '" + handle + "']"; 
var query = document.evaluate(path, doc, null, XPathResult.ANY_TYPE, null); 

Вы можете вычислить выполнить время кода с помощью этого кода

var startDate = new Date().getTime(); 

// Your code 

var endDate = new Date().getTime(); 
var executeTime = endDate - startDate; 

Я проверить выполнение времени кода, это правильно.

Посмотреть полный пример jsfiddle

+0

Но проблема в оценке не поддерживается IE11 – Joe

+0

@Joe Используйте 'xmlDoc.selectNodes (xpath)' в IE. См. Http://www.w3schools.com/xsl/xpath_examples.asp – Mohammad

+0

Есть ли способ с точки зрения совместимости браузера, кроме xpath? – Joe

Смежные вопросы