【问题标题】:SqlXml removes XML header when comes from stringSqlXml 删除来自字符串的 XML 标头
【发布时间】:2015-09-04 19:06:08
【问题描述】:

我正在使用 C# 和 MVC4 开发一个 Web 应用程序。目前我正在将字符串变量转换为SqlXml 文件。我有一个具有这种结构的 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<cfdi:Comprobante xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/TimbreFiscalDigital/TimbreFiscalDigital.xsd" xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital" version="3.2" xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
</cfdi:Comprobante>

我将上述文件成功转换为字符串,然后我使用以下代码将字符串转换为 SqlXML

cfdiDocumento.CFDIXML = Serializar.XMLToSqlXml(comprobante);

其中 cfdiDocumento.CFDIXMLSqlXml varSerializar.XMLToSqlXml(comprobante) 方法接收字符串并执行以下代码:

    public static SqlXml XMLToSqlXml(string xmlString)
    {
        SqlXml sqlXmlFiltro = null;
        if (xmlString != null)
        {
            StringReader sr = new StringReader(xmlString);
            XmlReaderSettings settings = new XmlReaderSettings();
            settings.ConformanceLevel = ConformanceLevel.Auto;
            XmlReader reader0 = XmlReader.Create(sr, settings);
            sqlXmlFiltro = new SqlXml(reader0);
        }

        return sqlXmlFiltro;
    }

代码成功完成后,文件正确,但正在删除 xml 标头

<?xml version="1.0" encoding="utf-8"?>

问题是:如何在转换为 SqlXml var 时保留 xml 标头?

【问题讨论】:

标签: c# xml string sqlxml


【解决方案1】:

如果您无法更改 SqlXml 属性的类型,您可以尝试将 SqlXml 转换为 xml 文档以附加 xml 声明并获取外部 xml:

public string SqlXmlToString(SqlXml sqlXml)
{
    XmlDocument doc = new XmlDocument();
    doc.Load(sqlXml.CreateReader());

    // Create XML declaration with your encoding. 
    XmlDeclaration xmldecl;
    xmldecl = doc.CreateXmlDeclaration("1.0", null, null);
    xmldecl.Encoding = "UTF-8";

    // Add to the document the created declaration
    XmlElement root = doc.DocumentElement;
    doc.InsertBefore(xmldecl, root);

    return doc.OuterXml;
}

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    相关资源
    最近更新 更多