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

时间:2009-07-16 08:53:41

标签: 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 bar;

}

然后我将使用XMLSerializer生成文件,可能在发布之前检查它们。

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

2 个答案:

答案 0 :(得分:0)

首先,我假设现有域中的对象属性映射到第三方类型而没有太多操作,除了重复的属性赋值。

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

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

就GUI工具而言,我听说过Stylus Studio非常适合架构到架构的映射(截图here)。

答案 1 :(得分:0)

LINQ to XML对此非常有用......例如。

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) } ));