Имя: Пароль:
1C
 
ДокументDOM получить часть XML
0 YFred
 
17.09.15
10:53
Нужно из XML файла выдрать кусок данных, например есть XML:
<doc>
  <qq>
    еще вложенные теги с атрибутами

  </qq>
  <rr>

  </rr>
</doc>

Нужно получить строку содержащую:
  <qq>
    еще вложенные теги с атрибутами

  </qq>

Можно это сделать с помощью объекта ДокументDOM?
1 magicSan
 
17.09.15
10:58
xpatch тебе в помощь. можно
2 Fragster
 
гуру
17.09.15
11:04
(0) более полно можешь описать задачу? зачем этот "кусок XML нужен"
3 YFred
 
17.09.15
11:06
нужно сохранить один узел XML как строку, без обработки.
4 YFred
 
17.09.15
11:15
Как получить заданный узел я знаю, как из типа "ЭлементDOM" получить его содержимое в виде xml?
5 Fragster
 
гуру
17.09.15
11:16
через построительDOM делаем документDOM,
через XPpath или любым другим методом находим нужный узел,
копируем его вместе со всем подчинением, устанавливаем его в качестве элемента документа.
6 Fragster
 
гуру
17.09.15
11:16
устанавливаем копию
7 YFred
 
17.09.15
11:47
Мне надо не скопировать узел, а получить его необработанное значение в виде строки XML
8 Fragster
 
гуру
17.09.15
11:49
(7) после того, как скопируешь и установишь корнем - надо документDOM записать в XML
9 YFred
 
17.09.15
12:00
пока сделал так:
    Результат = ДокументDOM.ВычислитьВыражениеXPath("/путь/*",ДокументDOM,Разыменователь);
                            Узел = Результат.ПолучитьСледующий();
                            
                            ХМЛ=Новый ЗаписьXML;
                            ХМЛ.ОткрытьФайл("c:\файл.xml");
                            ЗаписьДОМ=Новый ЗаписьDOM;
                            ЗаписьДОМ.Записать(Узел,ХМЛ);
                            ХМЛ.Закрыть();
                            чтение = Новый ТекстовыйДокумент;
                            Чтение.Прочитать("c:\файл.xml");
                            Сообщить(чтение.ПолучитьТекст());  //то что нужно

Но думаю можно как то легче, без записи в файл. Подскажите?
10 Fragster
 
гуру
17.09.15
12:16
XML.УстановитьСтроку();
....

Сообщить(XML.Закрыть())
11 YFred
 
17.09.15
13:46
если без открытия файла сделать ЗаписьДОМ.Записать(Узел,ХМЛ);
вылетает ошибка, ругается на приемник ХМЛ
12 YFred
 
17.09.15
13:54
разобрался :)
спасибо
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой