C# 如何将对象图转换为外部XML格式

C# 如何将对象图转换为外部XML格式,c#,xml-serialization,C#,Xml Serialization,我也必须以他们指定的XML格式向第三方发送信息,我相信这是一项非常常见的任务 我有一组XSD文件,并且使用XSD.exe创建了一组类型。要生成XML,我将域内类型的值映射到第三方类型: public ExternalBar Map(InternalFoo foo) { var bar = new ExternalBar; bar.GivenName = foo.FirstName; bar.FamilyName = foo.LastName; return b

我也必须以他们指定的XML格式向第三方发送信息,我相信这是一项非常常见的任务

我有一组XSD文件,并且使用XSD.exe创建了一组类型。要生成XML,我将域内类型的值映射到第三方类型:

public ExternalBar Map(InternalFoo foo) {
    var bar = new ExternalBar;

    bar.GivenName = foo.FirstName;
    bar.FamilyName = foo.LastName;

    return bar;

}
然后,我将使用XMLSerializer生成这些文件,可能会在发布它们之前根据XSD检查它们


这种方法非常手动,我想知道是否有更好的方法使用框架或外部工具来映射数据和创建文件。

首先,我假设现有域中的对象属性映射到第三方类型,而无需进行太多操作,除了重复的属性分配

因此,我建议只使用域树的标准XML序列化,使用XSD为类生成出站模式,然后通过一组XSLT样式表对结果进行后处理。然后在后处理之后,根据第三方模式验证生成的XML文档

它可能会更复杂,因为它实际上取决于对象域之间映射的复杂性,但这是我过去成功使用的一种方法


就GUI工具而言,我听说过但自己没有使用过,这对于模式到模式映射屏幕截图来说非常好。

LINQ to XML在这方面非常有效。。。e、 g

XElement results = new XElement("ExternalFoos",
    from f in internalFoos
    select new XElement("ExternalFoo", new XAttribute[] {
        new XAttribute("GivenName", f.FirstName),
        new XAttribute("FamilyName", f.LastName) } ));

手册您想只使用拖放功能生成它吗?@Grzenio,不,不是通过拖放功能生成的。我想知道框架中是否有我不知道的工具可以提供帮助,例如System.Xml.Linq名称空间。