v7: Чтение XML
☑
0
dll
03.02.15
✎
03:52
не могу разобраться с xml...
есть 3х узельный xml, не могу вытащить - "nomenclature, count, price"
знатоки помогите пожалуйста
-<sales>
-<sale>
<date>01.09.2014</date>
<sale_point>000001032</sale_point>
<payed>0.0</payed>
-<items>
-<item>
<nomenclature>000000030</nomenclature>
<count>49.476549999999996</count>
<price>210.0</price>
</item>
+<item>
+<item>
+<item>
+<item>
+<item>
+<item>
+<item>
</items>
</sale>
+<sale>
+<sale>
+<sale>
</sales>
Анализатор=СоздатьОбъект("AddIn.XMLParser");
XMLДокумент=Анализатор.СоздатьДокумент();
XMLДокумент.Загрузить(ПутьР);
ЭлДокумент = XMLДокумент.ВыбратьУзел("sales");
Выборка=ЭлДокумент.ВыбратьУзлы("sale");
Для сч1 = 1 По Выборка.КоличествоУзлов Цикл
Док = Выборка.ПолучитьУзел(сч1-1);
Data = Док.ВыбратьУзел("date").Значение;
sale_point = Док.ВыбратьУзел("sale_point").Значение;
payed = Док.ВыбратьУзел("payed").Значение;
КонецЦикла;
1
VladZ
03.02.15
✎
05:08
А в чем проблема? Данные у тебя в разделе items. Выбирай итемсы и поберешься до своих данных
2
dll
03.02.15
✎
09:02
(1) не могу получить узел - items-item
3
ProgAL
03.02.15
✎
09:21
Data = Док.ВыбратьУзел("date").Значение; В этом же цикле делай выборку по items, и еще 1 цикл внутри нее по item.
4
dll
03.02.15
✎
10:11
(3) что не так делаю?
Анализатор=СоздатьОбъект("AddIn.XMLParser");
XMLДокумент=Анализатор.СоздатьДокумент();
XMLДокумент.Загрузить(ПутьР);
ЭлДокумент = XMLДокумент.ВыбратьУзел("sales");
Выборка=ЭлДокумент.ВыбратьУзлы("sale");
Для сч1 = 1 По Выборка.КоличествоУзлов Цикл
Док = Выборка.ПолучитьУзел(сч1-1);
Data = Док.ВыбратьУзел("date").Значение;
sale_point = Док.ВыбратьУзел("sale_point").Значение;
payed = Док.ВыбратьУзел("payed").Значение;
ЭлДок = XMLДокумент.ВыбратьУзел("items");
ВыборкаItem = ЭлДок.ВыбратьУзлы("item");
Для сч2 = 1 По ВыборкаItem.КоличествоУзлов Цикл
Док2 = ВыборкаItem.ПолучитьУзел(сч2-2);
nomen = ВыборкаItem.ВыбратьУзел("nomenclature").Значение;
Сообщить(nomen);
КонецЦикла;
КонецЦикла;
5
dll
03.02.15
✎
10:12
ругается на:
ВыборкаItem = ЭлДок.ВыбратьУзлы("item");
{Документ.ЗагрузкаВыгрузкаXML.Форма.Модуль(656)}: Значение не представляет агрегатный объект (ВыбратьУзлы)
6
Rie
03.02.15
✎
10:15
(5) А кто такой ЭлДок?
7
VladZ
03.02.15
✎
10:19
Идемсы = Док.ВыбратьУзел("items");
ВыборкаItem = Идемсы.ВыбратьУзлы("item");
Выбираешь из выборки.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший