代码之家  ›  专栏  ›  技术社区  ›  Keith Bloom

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

  •  0
  • Keith Bloom  · 技术社区  · 15 年前

    我也必须以他们指定的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检查它们。

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

    2 回复  |  直到 7 年前
        1
  •  0
  •   mancaus    15 年前

    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) } ));
    
        2
  •  0
  •   devstuff    15 年前

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

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

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

    就图形用户界面工具而言,我听说(但我自己没有用过) Stylus Studio 非常适合模式到模式的映射(屏幕截图 here )