Имя: Пароль:
1C
1С v8
Подскажите по XML
,
0 DES
 
09.07.15
15:10
Есть такое:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">;
<row>
  <AREA_CODE>1</AREA_CODE>
  <CITY_CODE>25</CITY_CODE>
</row>
<row>
  <AREA_CODE>1</AREA_CODE>
  <CITY_CODE>15</CITY_CODE>
</row>
</root>

как получать CITY_CODE в цикле ?
1 Лефмихалыч
 
09.07.15
15:12
читать в цикле до тех пор, пока не дочитаешь до начала элемента CITY_CODE.
В чем проблема?
2 AllJoke
 
09.07.15
15:12
// чтение XML

    XML = Новый ЧтениеXML;
    XML.ОткрытьФайл("d:\Базы 1С\Data.xml");

    Пока XML.Прочитать() Цикл

        Если XML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
            Сообщить("<" + XML.Имя + ">");

            Пока XML.ПрочитатьАтрибут() Цикл
                Сообщить(XML.Имя + " = " + XML.Значение);
            КонецЦикла;

        КонецЕсли;

        Если XML.ТипУзла = ТипУзлаXML.Текст Тогда
            Сообщить(XML.Значение);
        КонецЕсли;

        Если XML.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
            Сообщить("");
        КонецЕсли;

    КонецЦикла;

    XML.Закрыть();
3 Ненавижу 1С
 
гуру
09.07.15
15:12
что не получилось?
4 Ёпрст
 
09.07.15
15:18
в домдокументе можно прыгать только по узлам как ты хочешь
5 DES
 
09.07.15
15:24
я путаюсь еще, где атрибут, зде элемент, где и не атрибут а  сразу текст
6 DES
 
09.07.15
15:27
(2) так оно работает конечно, а как получать сразу CITY_CODE, а не перебирать в цикле пока не найдется CITY_CODE ?
7 Лефмихалыч
 
09.07.15
15:35
(6) ни как
8 Лефмихалыч
 
09.07.15
15:35
хотя, нет, - есть xpath, но он тебя еще сильнее запутает, так что лучше перебирай
9 ДенисЧ
 
09.07.15
15:36
(7) XDTO
10 Лефмихалыч
 
09.07.15
15:39
(9) да это все струйня и не серьезно, равно, как и все DOM'ы b XPath'ы. Оно все приводит к чтению файла целиком. Если файл огромный, то - один кол - читать последовательно. Если файл маленький, то выигрыша по перфомансу по сравнению с последовательным чтением либо не будет, либо он будет измеряться милисекундами
11 Timon1405
 
09.07.15
15:41
12 DES
 
09.07.15
15:58
(11) замечательно!
13 Гёдза
 
09.07.15
16:16
(10) по перфомансу - нет, по читабельности код - колоссальный выигрыш
14 DES
 
09.07.15
17:19
(2) что то не пойму, как присвоить значение переменной,
тут в одном цикле имя, в другом значение ?
В каком месте можно записать в структуру
Стр.Вставить("AREA_CODE", XML.Значение) ?
15 DES
 
10.07.15
08:28
подскажите, читаю схему из файла
НовоеЧтениеXML = Новый ЧтениеXML;
НовоеЧтениеXML.ОткрытьФайл("D:\TEST_XDTO.xsd");
Все работает.
как сделать тоже самое, но из строки загрузить схему?
НовоеЧтениеXML = Новый ЧтениеXML;
НовоеЧтениеXML.Читать(Стр);
а так не хочет.