![]() |
|
![]() ![]() ![]() |
|
DCamer |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
Как сделать чтение XML-документа, а именно опций узлов:
Про встроенную компоненту TXMLDocument в курсе, но не знаю как с компонентой работать. Это сообщение отредактировал(а) DCamer - 25.11.2010, 16:46 --------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: нет Всего: 196 |
гугл знает и готов поделиться!
|
|||
|
||||
DCamer |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
В пресловутом гугле решений под C++Builder практически нет, а если и есть, то не то, что нужно.
--------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: нет Всего: 196 |
||||
|
||||
DCamer |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
У меня выдаёт последний код, что какая-то ошибка на строке 1, видимо речь о XML-файле:
--------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
DCamer |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
Вот что собственно надо:
![]() Да, кстати в XML-файле нету этого:
Это сообщение отредактировал(а) DCamer - 25.11.2010, 18:50 --------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: нет Всего: 196 |
А если добавить эту строку, будет исключение?
Кстати, обрати внимание, что по приведенной ссылке работа с TXMLDocument была внутри блока try{}catch, думаю, неспроста. |
|||
|
||||
DCamer |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
Эта ошибка - нет, но появляется новая ошибка:
--------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: нет Всего: 196 |
DCamer, и в каком месте появляется? Пройдись отладчиком! Тут телепатов нет.
|
|||
|
||||
DonPager |
|
|||
![]() Колдырь ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 28.3.2003 Где: Воронеж Репутация: 1 Всего: 2 |
DCamer, ... и укажи версию билдера (в ХЕ немножко поменялся код для хмл)
-------------------- кодер + лодырь = колдырь |
|||
|
||||
DCamer |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
DonPager, версия билдера у меня в подписи.
![]() --------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
DCamer |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
bsa, отладчик при Break ссылается на System.pas:
--------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
Isko |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 12.12.2006 Репутация: 1 Всего: 1 |
Могу скинуть кусок проги где у меня происходит чтение узлов и значенийю
Правда у меня не опции а всего лишь одно значение для каждого узла. |
|||
|
||||
DCamer |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
Isko, скинь коль не жалко.
![]() --------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
DCamer |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
Всем спасибо, все свободны.
![]()
Это сообщение отредактировал(а) DCamer - 11.1.2011, 00:42 --------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
DCamer |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
А как считать XML-файл, такого вида, который создаёт MS Office?
--------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
oldcode |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 8.10.2010 Репутация: 0 Всего: 0 |
что ? нет ответа ? так ты же сам сказал :
Это сообщение отредактировал(а) oldcode - 11.1.2011, 03:08 |
||||
|
|||||
DCamer |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
oldcode, что-то я не помню такого, чтоб в течении часа отвечали.
![]() Это сообщение отредактировал(а) DCamer - 11.1.2011, 14:02 --------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
oldcode |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 8.10.2010 Репутация: 0 Всего: 0 |
уж который час пошел...
|
|||
|
||||
DCamer |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
Уж который раз я так пишу...
--------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
oldcode |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 8.10.2010 Репутация: 0 Всего: 0 |
Добавлено @ 14:12
Если да , то переименуй .docx в .hml или в другое любое немыслимое расширение ;) и нажми Key(13) ![]() Это сообщение отредактировал(а) oldcode - 12.1.2011, 14:52 |
||||
|
|||||
DCamer |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
Если вам нечего сказать по делу, не говорите ничего.
Но я говорил про XML-файл, который не имеет стандартной структуры тегов, а состоит из Workbook. --------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
С какого перепугу он вдруг 'не имеет стандартной структуры тегов'? Вполне стандартные xml файлы (и много) |
|||
|
||||
DCamer |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
В обычной структуре нет такого:
И компонент TXMLDocument не читает его вообще, а если исходить из вашей логики, то оный должны его считывать нормально. --------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
xvr |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Нормальный фрагмент с xml-namespace'ами
|
||||||
|
|||||||
DCamer |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
Да-с, знать бы откуда его взять.
--------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
||||
|
||||
DCamer |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
Предположим есть такой XML:
Как все их вгрузить в ListBox? Пробовал такой код:
Но, в данном случае, он находит лишь первый узел «Row», и считывает с него данные, но нужно чтобы считывал со всех узлов «Row». Это сообщение отредактировал(а) DCamer - 10.4.2011, 15:37 --------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
||||
|
|||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Ой, мама, роди меня обратно! ![]() ![]() В вашем случае напрашивается использование XPath. Там есть нечто называемое IXMLNode::TransformNode - это XSLT трансформация. Можете воспользоваться ею Еще бы, вы же ему явно сказали
|
||||
|
|||||
DCamer |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
Нет. 3 - это Worsheet, 1 - это Table (обычная структура). Далее же идет обращение к Row (ChildNodes->FindNode("Row")). --------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
||||
|
||||
DCamer |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
Не увидел я XSLT-трансформацию негде, к сожалению...
--------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
srt |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 13.5.2008 Репутация: нет Всего: 1 |
http://www.sitemaps.org/schemas/sitemap/0.9
ещё можно яндексовый хмл посмотреть но луче сётки w3.org Это сообщение отредактировал(а) srt - 1.5.2011, 01:25 |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
В MSDN тоже не было? Там довольно подробно расписано. ( http://msdn.microsoft.com/en-us/library/ms...28VS.85%29.aspx ) В вашем случае такой xsl файл :
Вам надо загрузить этот xsl файл в XMLDocument а потом подать его корень в nodRoot->TransformNode На выходе получите XML документ из одних <item> ..</item> Это сообщение отредактировал(а) xvr - 1.5.2011, 11:01 |
|||
|
||||
srt |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 13.5.2008 Репутация: нет Всего: 1 |
мастдай форева
хоть его все и хают - но там самая подробная инфа лежит |
|||
|
||||
DCamer |
|
||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
Странно, вываливается ошибка:
Код:
Да, кстати, относительно XSLT-трансформации: оная позволит записать изменения в XML-файл? Это сообщение отредактировал(а) DCamer - 1.5.2011, 16:03 --------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
||||||
|
|||||||
srt |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 13.5.2008 Репутация: нет Всего: 1 |
блин просто напиши echo 'hello world';
если чото получица - напиши:О) Добавлено через 1 минуту и 25 секунд вы чо пацаны - читать разучились?? я в лёгком нифигасебе .. Добавлено через 11 минут и 15 секунд расслабься - ХМЛ не при делах просто ты со своим провом не до... говорился :О) Добавлено через 11 минут и 54 секунды на самом деле достаточно просто масива .. |
|||
|
||||
DCamer |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
На самом деле массив идёт дальше, т.к. в массиве идёт само заполнение компонент содержимым XML-файла. Ну вот и пиши код PHP в приложении C++. ![]() Это сообщение отредактировал(а) DCamer - 1.5.2011, 23:45 --------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
srt |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 13.5.2008 Репутация: нет Всего: 1 |
запросто
хмл это разбор в а потом разбор из массив проще хоть си хоть пыхыпы .. |
|||
|
||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Ему еще надо подать куда выводить:
Угу, 2я разновидность вызова |
||||
|
|||||
DCamer |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
А как впоследствии все эти итемы вгрузить в ListBox? Что не пытаюсь сделать — везде та же структура остаётся. --------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
||||
|
||||
DCamer |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
--------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
||||
|
||||
DCamer |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
Интересно, и как все эти item вгрузить?
--------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Ну собственно так, как вы и грузили - перебором элементов в Document'е. Только вам не придется заниматься сканированием иерархии Document'а - они все будут лежать прямо в корне |
|||
|
||||
DCamer |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
Перебор работает, и почему, то пишет List index out of bounds (3), он что ли ищет четвёртый узел...
А трансформация, почему, то вызывает «Access violation at address 00459981 in module 'smee.exe'. Write of address 0053378D.»
Это сообщение отредактировал(а) DCamer - 7.6.2011, 20:49 --------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
||||
|
|||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Видимо да. А чему у вас равен n?
На какой строке? |
||||
|
|||||
DCamer |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
Что-то я про эту переменную забыл, исправил. Спасибо. ![]() Проверка точкой останова указала на:
--------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
У вас счетчик извлекается из nodRoot, а элементы из nodtRoot
Кроме того, то xslt, который я приводил, кладет элементы прямо в сам XMLDocument, а не в корневой узел. Т.е. он формирует XML-Fragment, а не нормальный XML-Document. Я не знаю, как будет себя чувствовать IXMLDocument с такими данными. Подправьте MaterialEffects.xsl |
|||
|
||||
DCamer |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
Это я знаю, но результатов нет. Коим образом? Добавив корневой элемент? Не помогает. --------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
DCamer |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
Подскажите, пожалуйста, каким образом сохранить XML-файл перебором? То есть, есть куча узлов в двух ListView, содержимое каждого ListView добавляется в свой узел в XML-файле. Структура выходного XML-файла такова:
--------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
||||
|
||||
DCamer |
|
||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
А если программно надо добавить ряд статических узлов? Например:
То есть, добавить рут не беда, но надо всю xs:schema, программно по нодам создавать как-то муторно. Вот так создать рут не получается:
Это сообщение отредактировал(а) DCamer - 17.2.2012, 22:33 --------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |