LINUX.ORG.RU

[java] XPath и новый Document

 


0

0

Есть XML:
<?xml version=\"1.0\"?><root><a>1</a><a>2</a><a>3</a><a>4</a></root>

Нужно вычленить из него скажем <a>1</a> и преобразовать его в Document.

Применяем к XML XPath:


expr = xpath.compile("/root/a");
xresult = expr.evaluate(doc, XPathConstants.NODESET);
nodes = (NodeList)xresult;


те получаем массив node и берем первый:


Node node = nodes.item(0);
Document doc2 = db.newDocument();
doc2.importNode(node, true);


так вот если теперь преобразовать doc2 в строку и вывести ее там будет пустой XML :( в чем может быть ошибка подскажите или подкиньте пример плиз !


собственно документ мне нужен чтобы его потом скормить потом опять XPatch в надежде таким образом ускорить работу по парсингу огромного XML

xtron
() автор топика

StAX тебе нужен. И легкое хранилище типа sqlite для хранения промежуточных результатов разбора

anonymous
()
Ответ на: комментарий от wfrr

>Такими извратами ты можешь только затормозить эту работу.
Я просто уверен что расчленив XML на части я ускорю парсинг во много раз.

xtron
() автор топика
Ответ на: комментарий от anonymous

я конечно могу XML тупо регекспами порезать, но хочется ведь сделать все средствами этого извращенного API...

xtron
() автор топика
Ответ на: комментарий от wfrr

>На чем основанна сия уверенность?
на том что сейчас один XPath запрос выполняется 5 секунд.
с чем еще по твоему могут быть связны такие тормоза кроме того что XML несколько десятков мегабайт ? :)

xtron
() автор топика
Ответ на: комментарий от xtron

ты думаешь что парсинг, вырезание куска, пасинг, запрос xpath будет быстрее? ИМХО в таких случаях нужно переделывать архитектуру или клепать кеширование, а сабжевые извраты захавают памяти и процессора, но можешь потестить, чего уш там.

wfrr ★★☆
()
Ответ на: комментарий от wfrr

сейчас парсинг секции <a></a> такой же по скорости как и парсинг внутренностей секции. как только я вырежу секцию и приведу ее в формат пригодный для скармливания XPath (собственно об этом тема) парсинг внутренностей (многочисленных) в следствие резкого уменьшения XML станет практически мгновенным и общая скорость должна многократно вырасти

xtron
() автор топика
Ответ на: комментарий от xtron

Угу, "и печаль отступит и тоска пройдет"

wfrr ★★☆
()

Ну вообщем переписал я так как и хотел - разрезаю XML на куски, прилепляю к каждому куску заголовок XML, создаю из этого Document и каждый кусок скармливаю тем-же XPath.

Как я и говорил выигрыш в скорости коллосальный, то что разбиралось за 2 дня разбирается за 3 минуты...

xtron
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.