У меня довольно большой XML-файл (около 42 МБ), который я анализирую с помощью jquery. Мне нужно выборочно показать определенные узлы на основе идентификатора. При этом веб-браузер перестает отвечать на запросы, а среднее время анализа превышает 15 секунд.
Мой вопрос заключается в том, поможет ли преобразование этого большого XML-файла в JSON улучшить производительность? Ниже приведен пример XML.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE thesaurus SYSTEM "Thesaurus_1_4.dtd">
<thesaurus action="ExportLanguage" language="en" version="2.7" date="2011-08-15">
<options/>
<wordblocks>
<wordblock>
<term type="forbidden" lang="en" termid="18297">
<value>1,1-DIETHOXYETHANE</value>
</term>
<terms>
<term rel="USE" lang="en" termid="30" type="valid">
<value>ACETAL</value>
</term>
</terms>
</wordblock>
<wordblock>
<term type="forbidden" lang="en" termid="18307">
<value>1,2,3-PROPANETRIOL</value>
</term>
<terms>
<term rel="USE" lang="en" termid="4028" type="valid">
<value>GLYCEROL</value>
</term>
</terms>
</wordblock>
<wordblock>
<term type="forbidden" lang="en" termid="18308">
<value>1,2,3-TRIHYDROXYBENZENE</value>
</term>
<terms>
<term rel="USE" lang="en" termid="8094" type="valid">
<value>PYROGALLOL</value>
</term>
</terms>
</wordblock>
<wordblock>
<term type="forbidden" lang="en" termid="18309">
<value>1,2,4,5-TETRAMETHYLBENZENE</value>
</term>
<terms>
<term rel="USE" lang="en" termid="2814" type="valid">
<value>DURENE</value>
</term>
</terms>
</wordblock>
<wordblock>
<term type="forbidden" lang="en" termid="18298">
<value>1,2-DIHYDROXYANTHRAQUINONE</value>
</term>
<terms>
<term rel="USE" lang="en" termid="229" type="valid">
<value>ALIZARIN</value>
</term>
</terms>
</wordblock>
</wordblocks>
</thesaurus>
и вот вызов ajax в XML
LoadRelatedTerms = function (term) {
$.ajax({
type: "GET",
url: "THESAURUS.xml",
dataType: "xml",
success: function (xml) {
$('.items').html('');
$(xml).find('wordblock').each(function () {
$(this).children('term').each(function () {
var value = $(this).find('value').text();
if (value == term) {
$(this).parent().children('terms').children('term[level=1]').each(function () {
var id = $(this).attr('id');
var termValue = $(this).find('value').text();
$('<div class="items" id="term' + id + '"></div>').html(termValue).appendTo('#page-wrap');
});
return false;
}
});
});
}
});