|
Как добраться до элемента XDTO | ☑ | ||
---|---|---|---|---|
0
ВаликТР
10.02.14
✎
16:12
|
Всем доброго!
Уже поднимал этот вопрос, но не решилос. Есть XML <?xml version="1.0" encoding="UTF-8"?> <catalog xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" date="Дата"> <shop xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <categories> <category id="00000001">Фотоаппараты</category> ... </categories> </shop> </catalog> Читаю его об = ФабрикаXDTO.ПрочитатьXML(Чтение); Далее вывожу в отладчике об.shop.categories.category - СписокXDTO об.shop.categories.category[0] - ОбъектXDTO id = "0000001" А где у него прячется "Фотоаппараты"? Как его получить? То что оно там где-то зарыто - сто процентов, потому что при записи в XML все выводится. И Текст и атрибут. Спасибо! |
|||
1
Maxus43
10.02.14
✎
16:16
|
где в файле фотоаппараты то?
|
|||
2
Maxus43
10.02.14
✎
16:20
|
в "об.shop.categories.category[0]" - только id?
|
|||
3
ВаликТР
10.02.14
✎
16:23
|
(2) да
|
|||
4
AaNnDdRrEeYy
10.02.14
✎
16:26
|
ФабрикаXDTO (XDTOFactory)
ПрочитатьXML (ReadXML) Синтаксис: ПрочитатьXML(<ЧтениеXML>, <Тип>) Параметры: <ЧтениеXML> (обязательный) Тип: ЧтениеУзловDOM, ЧтениеFastInfoset, ЧтениеXML. Объект чтения XML. <Тип> (необязательный) второй параметр передай Тип: ТипЗначенияXDTO; ТипОбъектаXDTO. Тип элемента данных XDTO. Если тип не указан, то будет сделана попытка определить тип данных по текущему состоянию объекта ЧтениеXML. Описание: Читает элемент данных XDTO указанного типа из объекта чтения XML. Доступность: Тонкий клиент, сервер, толстый клиент, внешнее соединение. |
|||
5
AaNnDdRrEeYy
10.02.14
✎
16:26
|
(4)+ второй параметр надо передать в чтение
|
|||
6
ВаликТР
10.02.14
✎
16:39
|
(5) И какой же тип туда вставить? если можно кодом?
Ведь выгружает и без второго параметра с "Фотоаппаратами". Где-то же оно его хранит... |
|||
7
ВаликТР
10.02.14
✎
16:40
|
(4) "Читает элемент данных XDTO"
Я читаю не currency, а весь файл. Какой тип? |
|||
8
ВаликТР
10.02.14
✎
16:41
|
(7) вернее не category
|
|||
9
SUA
10.02.14
✎
16:51
|
об.shop.categories.category[0].ТекстовоеСодержимое
|
|||
10
SUA
10.02.14
✎
16:51
|
так не?
|
|||
11
AaNnDdRrEeYy
10.02.14
✎
16:54
|
(7) самый корневой тип, т.е тип самого верхнего элемента.
без указания типа XDTO может прочитать любой файл xml, но как он его прочитает это уже другой вопрос. в одном случае у тебя будет CписокXDTO в другом ОбъектXDTO. с указанием типа всегда одинаковый объект. |
|||
12
ВаликТР
10.02.14
✎
16:54
|
(10) поле объекта ТекстовоеСодержимое не обнаружено
|
|||
13
Serginio1
10.02.14
✎
16:55
|
Вполне возмоно, что внутри он хранить ДокументDOM и к нему обращается
|
|||
14
AaNnDdRrEeYy
10.02.14
✎
16:55
|
xsd файл выложи
|
|||
15
ВаликТР
10.02.14
✎
17:04
|
(14) нет его.
Ведь могу же менять об.shop.categories.category[0].id = "00003"; в результате выводит <?xml version="1.0" encoding="UTF-8"?> <catalog xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" date="Дата"> <shop xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <categories> <category id="00003">Фотоаппараты</category> </categories> ... </shop> </catalog> и xsd не нужно. |
|||
16
Serginio1
10.02.14
✎
17:17
|
(14) Он его как anyType читает.
(15) Можешь даже удалить Объект.category[0].Сбросить("id"); Но для того что бы добраться до Фотоаппараты тебе нужно, чтобы свойство category было строкой, а не объектомXDTO. |
|||
17
ВаликТР
10.02.14
✎
17:32
|
(16) Но если оно будет строкой, тогда я не смогу в него добавить атрибуты, так?
|
|||
18
Serginio1
10.02.14
✎
17:47
|
Угу
Если бы было типа <category id="00003"> <Товар>Фотоаппараты</Товар> </category> То все прекрасно бы читалось. |
|||
19
ВаликТР
10.02.14
✎
18:00
|
(18) Мне капец. Не знаю, у кого помощи просить. Может вы мне поможете. Уже заплатить готов.
Задача такая. 1. Есть результат запроса. 2. Есть XML файл, где в атрибутах содержатся имена полей запроса. Нужно пройти по строкам запроса и добавить элементы, заполнив атрибуты значениями полей. |
|||
20
ВаликТР
10.02.14
✎
18:06
|
т.е вот это
<?xml version="1.0" encoding="windows-1251"?> <!DOCTYPE yml_catalog SYSTEM "shops.dtd"> <yml_catalog date="Дата"> <shop> <currencies> <currency id="КодВалюты" rate="Курс" plus="Плюс"/> </currencies> <categories> <category id="КодКатегории">НаименованиеКатегории</category> </categories> <local_delivery_cost>300</local_delivery_cost> <offers> <offer id="КодТовара" type="vendor.model" bid="13" cbid="20" available="true"> <url>http://magazin.ru/product_page.asp?pid=14344</url> <price>15000</price> </offer> </offers> </shop> </yml_catalog> должно превратиться в новый файл вот в это <?xml version="1.0" encoding="windows-1251"?> <!DOCTYPE yml_catalog SYSTEM "shops.dtd"> <yml_catalog date="2006-11-30 16:46"> <shop> <currencies> <currency id="RUR" rate="1" plus="0"/> <currency id="USD" rate="8" plus="0"/> </currencies> <categories> <category id="10" parentId="1">Принтеры</category> <category id="100" parentId="10">Струйные принтеры</category> </categories> <offers> <offer id="12341" type="vendor.model" bid="13" cbid="20" available="true"> <url>http://magazin.ru/product_page.asp?pid=14344</url> <price>15000</price> </offer> <offer id="12342" type="book" bid="17" available="true"> <url>http://magazin.ru/product_page.asp?pid=14345</url> <price>100</price> </offer> </offers> </shop> </yml_catalog> |
|||
21
Serginio1
10.02.14
✎
18:06
|
Самый простой вариант это чтениеXML и записьXML
Пожешь построительDOM v8: Помогите с DOM, немогу понять как выгружать узел |
|||
22
Serginio1
10.02.14
✎
18:20
|
||||
23
DS
10.02.14
✎
18:20
|
(20) DOM + XPath
|
|||
24
Serginio1
10.02.14
✎
18:27
|
||||
25
ВаликТР
10.02.14
✎
19:05
|
(22) (24) все перечитал и повторил. Не то.
|
|||
26
ВаликТР
10.02.14
✎
19:14
|
Ладно, может упростить задачу.
Можно ли каким-то методом склеить ЭлементDOM <catalog xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" date="Дата"> <shop xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <categories> <category id="00003">Фотоаппараты</category> </categories> </shop> </catalog> С ВОТ ЭТИМ <catalog xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" date="Дата"> <shop xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <categories> <category id="00004">Фотоаппараты</category> </categories> </shop> </catalog> ЧТТОБЫ В ИТОГЕ ПОЛУЧИЛОСЬ ВОТ ЭТО <catalog xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" date="Дата"> <shop xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <categories> <category id="00003">Фотоаппараты</category> id="00004">Фотоаппараты</category> </categories> </shop> </catalog> |
|||
27
DS
10.02.14
✎
20:01
|
Все зависит от конкретной задачи. Судя по (19) и (20) есть запрос и есть конкретная структура/формат/схема файла.
Берем ДОМ, ищем нужный узел (ВычислитьВыражениеXPath, ПолучитьЭлементыПоИмени ...), добавляем в цикле дочерние узлы с нужными данными и атрибутами (СоздатьЭлемент, ТекстовоеСодержимое, УстановитьАтрибут, ДобавитьДочерний ...). |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |