Skip to content

Commit 5e4e5a8

Browse files
committed
Ссылка на сущность в ЗаписатьТекущий.
1 parent 655afbe commit 5e4e5a8

File tree

2 files changed

+45
-1
lines changed

2 files changed

+45
-1
lines changed

src/OneScript.StandardLibrary/Xml/XmlWriterImpl.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,8 +214,10 @@ public void WriteCurrent(XmlReaderImpl reader)
214214
case XmlNodeType.Comment:
215215
WriteComment(reader.Value);
216216
break;
217-
case XmlNodeType.Entity:
218217
case XmlNodeType.EntityReference:
218+
WriteEntityReference(reader.Name);
219+
break;
220+
case XmlNodeType.Entity:
219221
case XmlNodeType.EndEntity:
220222
case XmlNodeType.ProcessingInstruction:
221223
case XmlNodeType.Document:

tests/xmlwrite.os

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
ВсеТесты.Добавить("ТестДолжен_ЗаписатьТекущий_Текст");
3939
ВсеТесты.Добавить("ТестДолжен_ЗаписатьТекущий_CDATA");
4040
ВсеТесты.Добавить("ТестДолжен_ЗаписатьТекущий_Комментарий");
41+
ВсеТесты.Добавить("ТестДолжен_ЗаписатьТекущий_СсылкаНаСушность");
4142
ВсеТесты.Добавить("ТестДолжен_ЗаписатьТекущий_ПолноеКопирование");
4243

4344
ВсеТесты.Добавить("ТестДолжен_ЗаписатьТекущий_ОбъявлениеИТипДокумента");
@@ -591,6 +592,45 @@
591592

592593
КонецПроцедуры
593594

595+
Процедура ТестДолжен_ЗаписатьТекущий_СсылкаНаСушность() Экспорт
596+
597+
Перем ЧтениеXML, ЗаписьXML;
598+
599+
ПодготовитьТестовыеДанныеДляЗаписиТекущего(ЧтениеXML, ЗаписьXML);
600+
601+
ДойтиДоИмени(ЧтениеXML, "entity");
602+
ПрочитатьИПроверитьТип(ЧтениеXML, ТипУзлаXML.СсылкаНаСущность);
603+
604+
ЗаписьXML.ЗаписатьНачалоЭлемента("эл");
605+
ЗаписьXML.ЗаписатьТекущий(ЧтениеXML);
606+
ЗаписьXML.ЗаписатьКонецЭлемента();
607+
608+
ПолученныйТекст = ЗаписьXML.Закрыть();
609+
юТест.ПроверитьРавенство("<эл>&СсылкаНаСущность;</эл>",
610+
ПолученныйТекст,
611+
"Ссылка на сущность");
612+
613+
ПодготовитьТестовыеДанныеДляЗаписиТекущего(ЧтениеXML, ЗаписьXML);
614+
615+
ДойтиДоИмени(ЧтениеXML, "entity2");
616+
617+
ЗаписьXML.ЗаписатьНачалоЭлемента("эл");
618+
619+
ПрочитатьИПроверитьТип(ЧтениеXML, ТипУзлаXML.Текст);
620+
ЗаписьXML.ЗаписатьТекущий(ЧтениеXML);
621+
622+
ПрочитатьИПроверитьТип(ЧтениеXML, ТипУзлаXML.СсылкаНаСущность);
623+
ЗаписьXML.ЗаписатьТекущий(ЧтениеXML);
624+
625+
ЗаписьXML.ЗаписатьКонецЭлемента();
626+
627+
ПолученныйТекст = ЗаписьXML.Закрыть();
628+
юТест.ПроверитьРавенство("<эл>Это &СсылкаНаСущность;</эл>",
629+
ПолученныйТекст,
630+
"Ссылка на сущность внутри текста");
631+
632+
КонецПроцедуры
633+
594634
Процедура ПодготовитьТестовыеДанныеДляЗаписиТекущего(ЧтениеXML, ЗаписьXML)
595635

596636
ПодопытныйТекст =
@@ -601,6 +641,8 @@
601641
| <ins:data xmlns:ins=""inner namespace mapping"" ins:attr=""1""></ins:data>
602642
| <cdata><![CDATA[Некоторый текст]]></cdata>
603643
| <БлокСКомментарием> <!-- Комментарий --> </БлокСКомментарием>
644+
| <entity>&СсылкаНаСущность;</entity>
645+
| <entity2>Это &СсылкаНаСущность;</entity2>
604646
|</xml>"
605647
;
606648

0 commit comments

Comments
 (0)