Почему XmlDocument заменяет HTML сущностей и как этого избежать? - PullRequest
0 голосов
/ 04 марта 2020

Я нашел этот вопрос , который похож на мой, я также подписываю документ XML с библиотекой, использующей XmlDocument, и у меня такая же проблема.

Мой вопрос вот почему и если возможно, как этого избежать. Я даже не использую метод Load , а заменяю Inner XML, пытаясь избежать синтаксического анализатора без результата.

string XML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
                "<HtmlEncode>" +
                "<accents>" + HttpUtility.HtmlEncode("áéíóúÁÉÍÓÚ") + "</accents>" +
                "<tilde>" + HttpUtility.HtmlEncode("ñÑ") + "</tilde>" +
                "<specialChar>" + HttpUtility.HtmlEncode("&") + "</specialChar>" +
                "<text>" + HttpUtility.HtmlEncode("Pérez & Compañía") + "</text>" +
                "</HtmlEncode>";

txtOriginal.Text = XML;

System.Xml.XmlDocument xDoc = new System.Xml.XmlDocument();
xDoc.InnerXml = XML;

txtEncoded.Text = xDoc.InnerXml;

original XML

<?xml version="1.0" encoding="UTF-8"?>
<HtmlEncode>
    <accents>&#225;&#233;&#237;&#243;&#250;&#193;&#201;&#205;&#211;&#218;</accents>
    <tilde>&#241;&#209;</tilde>
    <specialChar>&amp;</specialChar>
    <text>P&#233;rez &amp; Compa&#241;&#237;a</text>
</HtmlEncode>

XML после синтаксического анализатора

<?xml version="1.0" encoding="UTF-8"?>
<HtmlEncode>
    <accents>áéíóúÁÉÍÓÚ</accents>
    <tilde>ñÑ</tilde>
    <specialChar>&amp;</specialChar>
    <text>Pérez &amp; Compañía</text>
</HtmlEncode>

Кто-нибудь может указать мне правильное направление?

Сейчас я вручную заменяю акценты и тильды на символы без них, но я бы предпочел закодировать правильные символы.

...