Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.99/193: Рейтинг темы: голосов - 193, средняя оценка - 4.99
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506

Чем прочитать XML

25.05.2011, 10:19. Показов 35954. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Есть строка s as String.
Ее значение равно текст в формате XML, с помощью чего можно взять значения определенных тегов?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.05.2011, 10:19
Ответы с готовыми решениями:

Прочитать XML с сайта
продолжаю изучение программирования под Android, возник вопрос: допустим, у нас есть XML: http://informer.gismeteo.ru/xml/27612.xml ...

Не получается прочитать xml
Подскажите, что делаю не так при чтении xml? Запрос выдает "0", хотя <image-v2> не пустой $s =...

Как прочитать XML?
Собственно нужно прочитать и присвоить данные переменным соответствующим названию атрибута в xml.. <TestedDocument> <People...

30
0 / 0 / 0
Регистрация: 13.10.2005
Сообщений: 848
25.05.2011, 11:07
тут
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
25.05.2011, 12:24
всё хорошо в этом парсере..., кроме того, что он - DOM
т.е. сразу время на создание дерева и память на негоже
если данные небольшие - это не проблема

Добавлено: для больших объёмов меня заинтересовал vtd-xml
0
0 / 0 / 0
Регистрация: 13.10.2005
Сообщений: 848
25.05.2011, 12:40
спасибо за ссылку.
я как-то тоже выбирал. остановился на , ибо XSLT 2.0 нужен был.
0
1 / 1 / 0
Регистрация: 07.12.2009
Сообщений: 1,197
04.06.2011, 00:04
Цитата Сообщение от lmike
для больших объёмов меня заинтересовал vtd-xml
Если в двух словах, в чём там принцип? За счёт чего скорость и экономия ресурсов?
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
04.06.2011, 20:51
дерево строится по индексам - индексируют поток
0
1 / 1 / 0
Регистрация: 07.12.2009
Сообщений: 1,197
05.06.2011, 18:53
То есть это выгодно, когда надо несколько раз бегать по одному и тому же дереву, а для одноразового прохода и сбора данных затратится ещё и время на индексацию, правильно?
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
06.06.2011, 12:55
несовсем, построение дерева и аллокаизация памяти (реальная, с копированием данных) - достаточно затратные по времени операции
в случае, например, с ДОМ - происходит построение объектов в памяти
в данном случае - только индекс (условно), весь ли индекс грузят в память - мне не известно
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
06.06.2011, 13:18
если под одноразовым проходом понимается SAX - то надо учитывать ограничения SAX...
отсутствие рандомного доступа, невозможность проследить связь нод, без создания доп. структур...
да - для того чтобы просто выцепить ноду SAX будет "эффективным", но как только возникнет доп. задачи по связанная с записью или анализом - тут и появятся необходимость в др. ср-вах
0
1 / 1 / 0
Регистрация: 07.12.2009
Сообщений: 1,197
07.06.2011, 11:19
Цитата Сообщение от lmike
несовсем, построение дерева и аллокаизация памяти (реальная, с копированием данных) - достаточно затратные по времени операции
в случае, например, с ДОМ - происходит построение объектов в памяти
в данном случае - только индекс (условно), весь ли индекс грузят в память - мне не известно
Но ведь для "выработки индекса" тоже нужна память?
Если индекс вырабатывается и сгружается для освобождения памяти куда-то, а это скорее всего на диск)) то мы от дисковой подсистемы сразу же получаем ограничение в скорости.. И если индексы не хранятся в памяти, смысл использования явно не в скорости.



Цитата Сообщение от lmike
как только возникнет доп. задачи по связанная с записью или анализом - тут и появятся необходимость в др. ср-вах
Буду знать, спасибо! Собственно, наверное, это и есть область применения.

А по скорости интересно было бы глянуть тесты... (риторический вопрос )
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
07.06.2011, 12:39
ну с ДОМ есть там бенчмарки
ниже (там же) остальные тесты (ссылки), в том числе и SAX присутствует, по пропускной способности VTD всех побил , расход памяти, разумеется, у SAX отсутствует
0
0 / 0 / 0
Регистрация: 01.04.2007
Сообщений: 304
11.01.2012, 19:57
Поделитесь пожалуйста удобным парсером на LS, чтобы легко находить нужные ноды, править их свойства, создавать, удалять...
а то надоело в стринг переменную собирать.
0
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
15.01.2012, 13:56
можешь написать сам
0
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 615
16.01.2012, 12:10
Цитата Сообщение от lionk
Поделитесь пожалуйста удобным парсером на LS, чтобы легко находить нужные ноды, править их свойства, создавать, удалять...
есть штатный NotesDomParser.


Цитата Сообщение от lionk
надоело в стринг переменную собирать
если проблема в скорости - собирайте в stream
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
16.01.2012, 12:45
собирайте в stream
здесь есть оговорка - до 2-ух Гб (где-то) обсуждалось здесь...
если собирать в джавастрим (кусками) - нет такого ограничения
0
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 615
16.01.2012, 13:27
Цитата Сообщение от lmike
здесь есть оговорка - до 2-ух Гб (где-то) обсуждалось здесь...
если собирать в джавастрим (кусками) - нет такого ограничения
угу. но двухгиговая строка - не самый частый зверь Первый том войны и мира в библиотеке Мошкова весит 1(один) мегабайт.
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
07.11.2012, 13:54
Есть 30 метровый xml, надо распарсить. nu.xom.Builder падает при постройке парсера: java.lang.OutOfMemoryError
Работает в NotesAgent, проблема именно в размере файла.
Вопрос: чем лучше распарсить? XOM выбрал, так как ест меньше памяти чем jDom.
В Eclipse файл обрабатывается за 2-3 минуты, причем параллельно создает свою сокращенную копию, а тут даже парсер не строится...

Еще может получится достигнуть эффекта через настройки jvm?
текущие:
vmarg.Xmx=-Xmx1024m
vmarg.Xms=-Xms512m
vmarg.Xmca=-Xmca2m
0
1 / 1 / 0
Регистрация: 07.12.2009
Сообщений: 1,197
07.11.2012, 14:23
Как вариант: VTD-XML.
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
07.11.2012, 16:16
Вот да, тоже начал читать... не могу разобраться как получить следующий элемент "Contact"...
Не поможете?
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Код</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class=java>VTDNav vn = vg.getNav();
if (vn.matchElement("ContactList"))
count = vn.getAttrVal("Count");
System.out.println("\tFound count: " + vn.toString(count)); //Вывод значения по индексу Count
AutoPilot ap = new AutoPilot(vn);
ap.selectXPath("//Contact"); // + rootTag);
result = ap.evalXPath();
while (result != -1) {
// evaluate XPath Expressions withyn the Contact tags
if (vn.toElement(VTDNav.FIRST_CHILD, "DisplayName")) { // in Contact
do {
int val = vn.getText();
if (val != 1) {
String value = vn.toNormalizedString(val);
System.out.println("\tFound DisplayName: " + value);
}
}
while(vn.toElement(VTDNav.NEXT_SIBLING, "DisplayName"));
}
}[/CODE]UPD: решено - после while(...) надо было поставить vn.toElement(VTDNav.PARENT);
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
07.11.2012, 16:57
яж пример давал (и здесь в том числе):
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Сообщение с форума Интертраста полностью</div></div><div class="sp-body"><div class="sp-content">Тема: XML, DXL и прочая... очередной экзампел (выдергиватель файлов)
Mikhail Cholokov, 10:07:2008 20:52

История началась давно, но покоя тема не дает
всякие тулзы сопутствующие Домине для XML не слишком гибки/быстры/лаконичны/итп

были поиски и экзампелы
Первый про LAX - тыцаем сюды
Второй про VTD - тыцаем сюды

теперь вариант такой - пользуем VTD-XML:
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Пример кода</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class=java>import java.io.*;
import com.ximpleware.*;

public class save_base64stream {

public static void main(String[] args) throws Exception {
VTDGen vg = new VTDGen();

// AutoPilot ap = new AutoPilot();
// ap.selectXPath("/document/item/object/file/filedata/text()");

AutoPilot apAttr = new AutoPilot();

apAttr.selectXPath("/document/item/object/file");

if (vg.parseFile("./exported2.dxl", true)) {
VTDNav vn = vg.getNav();
apAttr.bind(vn);

// ap.bind(vn);

int i, iAttr;
String fileName;

while ((iAttr = apAttr.evalXPath()) != -1) {
iAttr = vn.getAttrVal("name");
fileName = vn.toString(iAttr);

// System.out.println(fileName);

i = -1;
vn.toElement(VTDNav.FIRST_CHILD, "filedata");
i = vn.getText();
Base64.decodeToFile(vn.toString(i), "test-" + fileName);
vn.toElement(VTDNav.PARENT);

// FileOutputStream fos = new FileOutputStream("test"+fileName);
// fos.write(s.getBytes());
// fos.close();
// System.out.println(vn.toString(i));
}
}
}
}[/CODE]Base64 класс был в первом примере. Или последний можно взять .

компилить можно так:
javac -classpath ./:./vtd-xml.jar ./save_base64stream.java

!в текущем путе д.б. Base64.class

запущать можно так:
java -cp ./:./vtd-xml.jar save_base64stream
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.11.2012, 16:57
Помогаю со студенческими работами здесь

Как прочитать xml?
Добрый день, помогите пжл прочитать следующий xml &lt;day_part typeid=&quot;3&quot; type=&quot;вечер&quot;&gt; &lt;temperature_from class_name=&quot;t18&quot;...

Правильно прочитать файл xml
Здравствуйте, помогите правильно вывести данные xml файла в memo, расположенной на форме. Данный файл открывается правильно в word(с...

Прочитать и вернуть значение из xml
Добрый день! как начинающий в Java столкнулась с проблемой. Есть xml файл вида: &lt;?xml version=&quot;1.0&quot;...

Прочитать данные из xml файла
Дано: xml документ такого содержания: &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;ServerList&gt; &lt;Server&gt; ...

Прочитать заданные узлы XML
Есть XML документ(например) &lt;books&gt; &lt;book&gt; &lt;page&gt;1000&lt;/page&gt; &lt;author&gt;I_am&lt;/author&gt; &lt;code&gt;1&lt;/code&gt; &lt;/book&gt; &lt;book&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru