Skip to content

Commit 1d81fcc

Browse files
committed
CDATA в ЗаписатьТекущий.
1 parent e9dd9ec commit 1d81fcc

2 files changed

Lines changed: 39 additions & 0 deletions

File tree

src/OneScript.StandardLibrary/Xml/XmlWriterImpl.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,9 @@ public void WriteCurrent(XmlReaderImpl reader)
201201
case XmlNodeType.EndElement:
202202
WriteEndElement();
203203
break;
204+
case XmlNodeType.CDATA:
205+
WriteCDATASection(reader.Value);
206+
break;
204207
case XmlNodeType.Text:
205208
WriteText(reader.Value);
206209
break;

tests/xmlwrite.os

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
ВсеТесты.Добавить("ТестДолжен_ЗаписатьТекущий_АтрибутВнутриЭлементаСЛишнимПереопределениемПространстваИмен");
3737
ВсеТесты.Добавить("ТестДолжен_ЗаписатьТекущий_КонецЭлемента");
3838
ВсеТесты.Добавить("ТестДолжен_ЗаписатьТекущий_Текст");
39+
ВсеТесты.Добавить("ТестДолжен_ЗаписатьТекущий_CDATA");
3940

4041
ВсеТесты.Добавить("ТестДолжен_ЗаписатьТекущий_ОбъявлениеИТипДокумента");
4142

@@ -505,6 +506,26 @@
505506

506507
КонецПроцедуры
507508

509+
Процедура ТестДолжен_ЗаписатьТекущий_CDATA() Экспорт
510+
511+
Перем ЧтениеXML, ЗаписьXML;
512+
513+
ПодготовитьТестовыеДанныеДляЗаписиТекущего(ЧтениеXML, ЗаписьXML);
514+
ДойтиДоИмени(ЧтениеXML, "cdata");
515+
ПрочитатьИПроверитьТип(ЧтениеXML, ТипУзлаXML.СекцияCDATA);
516+
517+
ЗаписьXML.ЗаписатьНачалоЭлемента("эл");
518+
ЗаписьXML.ЗаписатьТекущий(ЧтениеXML);
519+
ЗаписьXML.ЗаписатьСекциюCDATA(", к которому добавили ещё текст");
520+
ЗаписьXML.ЗаписатьКонецЭлемента();
521+
522+
ПолученныйТекст = ЗаписьXML.Закрыть();
523+
юТест.ПроверитьРавенство("<эл><![CDATA[Некоторый текст]]><![CDATA[, к которому добавили ещё текст]]></эл>",
524+
ПолученныйТекст,
525+
"CDATA");
526+
527+
КонецПроцедуры
528+
508529
Процедура ТестДолжен_ЗаписатьТекущий_ОбъявлениеИТипДокумента() Экспорт
509530

510531
Перем ЧтениеXML, ЗаписьXML;
@@ -536,6 +557,7 @@
536557
|<xml xmlns:ns=""ns"" attr=""1"" ns:attr=""value"">
537558
| <ns:data inner=""123"" inner2=""456"" inner3=""789"">Some Text</ns:data>
538559
| <ins:data xmlns:ins=""inner namespace mapping"" ins:attr=""1""></ins:data>
560+
| <cdata><![CDATA[Некоторый текст]]></cdata>
539561
|</xml>"
540562
;
541563

@@ -563,6 +585,20 @@
563585

564586
КонецПроцедуры
565587

588+
Функция ДойтиДоИмени(Знач ЧтениеXML, Знач Имя)
589+
590+
Пока ЧтениеXML.Имя <> Имя Цикл
591+
592+
Если Не ЧтениеXML.Прочитать() Тогда
593+
Возврат Ложь;
594+
КонецЕсли;
595+
596+
КонецЦикла;
597+
598+
Возврат Истина;
599+
600+
КонецФункции
601+
566602
Процедура ПрочитатьИПроверитьТип(Знач ЧтениеXML, Знач ТипУзла, Знач Сообщение = Неопределено)
567603
ЧтениеXML.Прочитать();
568604
юТест.ПроверитьРавенство(ЧтениеXML.ТипУзла, ТипУзла, Сообщение);

0 commit comments

Comments
 (0)