Skip to content

Commit b06bff4

Browse files
committed
Комментарии в ЗаписатьТекущий
1 parent 1d81fcc commit b06bff4

File tree

2 files changed

+58
-0
lines changed

2 files changed

+58
-0
lines changed

src/OneScript.StandardLibrary/Xml/XmlWriterImpl.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,21 @@ public void WriteCurrent(XmlReaderImpl reader)
207207
case XmlNodeType.Text:
208208
WriteText(reader.Value);
209209
break;
210+
case XmlNodeType.Whitespace:
211+
case XmlNodeType.SignificantWhitespace:
212+
WriteText(reader.Value);
213+
break;
214+
case XmlNodeType.Comment:
215+
WriteComment(reader.Value);
216+
break;
217+
case XmlNodeType.Entity:
218+
case XmlNodeType.EntityReference:
219+
case XmlNodeType.EndEntity:
220+
case XmlNodeType.ProcessingInstruction:
221+
case XmlNodeType.Document:
222+
case XmlNodeType.DocumentFragment:
223+
case XmlNodeType.Notation:
224+
throw new RuntimeException(new Localization.BilingualString($"Копирование узла {nodeType} не поддерживается"));
210225
default:
211226
break;
212227
}

tests/xmlwrite.os

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
ВсеТесты.Добавить("ТестДолжен_ЗаписатьТекущий_КонецЭлемента");
3838
ВсеТесты.Добавить("ТестДолжен_ЗаписатьТекущий_Текст");
3939
ВсеТесты.Добавить("ТестДолжен_ЗаписатьТекущий_CDATA");
40+
ВсеТесты.Добавить("ТестДолжен_ЗаписатьТекущий_Комментарий");
41+
ВсеТесты.Добавить("ТестДолжен_ЗаписатьТекущий_ПолноеКопирование");
4042

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

@@ -526,6 +528,46 @@
526528

527529
КонецПроцедуры
528530

531+
Процедура ТестДолжен_ЗаписатьТекущий_Комментарий() Экспорт
532+
533+
Перем ЧтениеXML, ЗаписьXML;
534+
535+
ПодготовитьТестовыеДанныеДляЗаписиТекущего(ЧтениеXML, ЗаписьXML);
536+
ДойтиДоИмени(ЧтениеXML, "БлокСКомментарием");
537+
538+
ЗаписьXML.ЗаписатьНачалоЭлемента("эл");
539+
540+
ПрочитатьИПроверитьТип(ЧтениеXML, ТипУзлаXML.ПробельныеСимволы);
541+
ЗаписьXML.ЗаписатьТекущий(ЧтениеXML);
542+
543+
ПрочитатьИПроверитьТип(ЧтениеXML, ТипУзлаXML.Комментарий);
544+
ЗаписьXML.ЗаписатьТекущий(ЧтениеXML);
545+
546+
ЗаписьXML.ЗаписатьТекст("Текст");
547+
ЗаписьXML.ЗаписатьТекущий(ЧтениеXML); // можем записать ещё раз
548+
ЗаписьXML.ЗаписатьКонецЭлемента();
549+
550+
ПолученныйТекст = ЗаписьXML.Закрыть();
551+
юТест.ПроверитьРавенство("<эл> <!-- Комментарий -->Текст<!-- Комментарий --></эл>",
552+
ПолученныйТекст,
553+
"Комментарий");
554+
555+
КонецПроцедуры
556+
557+
Процедура ТестДолжен_ЗаписатьТекущий_ПолноеКопирование() Экспорт
558+
559+
Перем ЧтениеXML, ЗаписьXML;
560+
561+
ПодготовитьТестовыеДанныеДляЗаписиТекущего(ЧтениеXML, ЗаписьXML);
562+
563+
Пока ЧтениеXML.Прочитать() Цикл
564+
ЗаписьXML.ЗаписатьТекущий(ЧтениеXML);
565+
КонецЦикла;
566+
567+
ЗаписьXML.Закрыть();
568+
569+
КонецПроцедуры
570+
529571
Процедура ТестДолжен_ЗаписатьТекущий_ОбъявлениеИТипДокумента() Экспорт
530572

531573
Перем ЧтениеXML, ЗаписьXML;
@@ -558,6 +600,7 @@
558600
| <ns:data inner=""123"" inner2=""456"" inner3=""789"">Some Text</ns:data>
559601
| <ins:data xmlns:ins=""inner namespace mapping"" ins:attr=""1""></ins:data>
560602
| <cdata><![CDATA[Некоторый текст]]></cdata>
603+
| <БлокСКомментарием> <!-- Комментарий --> </БлокСКомментарием>
561604
|</xml>"
562605
;
563606

0 commit comments

Comments
 (0)