在文件格式我正在与(OFX)工作是XML样和包含XML状前一堆纯文本填充位开始。它不喜欢的纯文本和XML部分之间具有的,所以我不知道是否有一种方式来获得XmlSerialiser忽略。我知道我可以去通过文件和消灭该行,但它会更简单和更清洁的不把它摆在首位写!任何想法?

有帮助吗?

解决方案

不要太强硬,你就必须序列化为显式声明的XmlWriter和设置上编剧的选项序列化之前。

public static string SerializeExplicit(SomeObject obj)
{    
    XmlWriterSettings settings;
    settings = new XmlWriterSettings();
    settings.OmitXmlDeclaration = true;

    XmlSerializerNamespaces ns;
    ns = new XmlSerializerNamespaces();
    ns.Add("", "");


    XmlSerializer serializer;
    serializer = new XmlSerializer(typeof(SomeObject));

    //Or, you can pass a stream in to this function and serialize to it.
    // or a file, or whatever - this just returns the string for demo purposes.
    StringBuilder sb = new StringBuilder();
    using(var xwriter = XmlWriter.Create(sb, settings))
    {

        serializer.Serialize(xwriter, obj, ns);
        return sb.ToString();
    }
}

其他提示

您将不得不操纵你调用的 Serialize 方法。它Settings酒店有 OmitXmlDeclaration 财产,你会想设置为true。您还需要设置ConformanceLevel属性,否则的XmlWriter将忽略OmitXmlDeclaration属性。

XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
settings.ConformanceLevel = ConformanceLevel.Fragment;
XmlWriter writer = XmlWriter.Create(/*whatever stream you need*/,settings);
serializer.Serialize(writer,objectToSerialize);
writer.close();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top