XmlDocument, предварительно отформатированный xml: добавить новую строку только после объявления XML - PullRequest
0 голосов
/ 15 января 2019

Мне нужно добавить строку после объявления xml, чтобы обработать файл во внешней системе, который отклоняет его в случае отсутствия. Я сам отформатировал документ при создании и подписании, так что я не хочу связываться с форматированием, так как портит подпись (у нее также есть сторонние внешние подписанные документы) .

Да, я могу открыть его как текст, использовать заменить "?> <</strong>" на "?> \ R \ n <</strong>", сохранить его или сделать все вручную, но я хочу сделать это "XmlDocument".

Что у меня есть:

<?xml version="1.0" encoding="ISO-8859-1"?><LceEnvioOblig xmlns="http://www.sii.cl/SiiLce" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sii.cl/SiiLce LceEnvioOblig_v10.xsd" version="1.0">
<DocumentoEnvioOblig ID="EnvioOblig_12868626-6_76876251-1">
<Caratula>
<RutEnvia>12868626-6</RutEnvia>
<RutContribuyente>76876251-1</RutContribuyente>
<TmstFirmaEnv>2019-01-15T12:00:14-03:00</TmstFirmaEnv>
</Caratula>

Что мне нужно:

<?xml version="1.0" encoding="ISO-8859-1"?>
<LceEnvioOblig xmlns="http://www.sii.cl/SiiLce" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sii.cl/SiiLce LceEnvioOblig_v10.xsd" version="1.0">
<DocumentoEnvioOblig ID="EnvioOblig_12868626-6_76876251-1">
<Caratula>
<RutEnvia>12868626-6</RutEnvia>
<RutContribuyente>76876251-1</RutContribuyente>
<TmstFirmaEnv>2019-01-15T12:00:14-03:00</TmstFirmaEnv>
</Caratula>

Соответствующий код:

    signedXml.ComputeSignature();

    XmlElement xmlDigitalSignature = signedXml.GetXml();

    xmlDoc.DocumentElement.AppendChild(xmlDoc.ImportNode(xmlDigitalSignature, true));
    var dec = xmlDoc.CreateXmlDeclaration("1.0", Constantes.SaveEncoding.EncodingName,"no");


    using (var sw = new StreamWriter(salida, false, Constantes.SaveEncoding))
    {
        xmlDoc.Save(sw);
    }

Примечание. Я не использую отступы, и PreserveWhitespace не работал для меня нормально.

Любые предложения или лучший способ сделать это?

...