我必须以他们指定的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或外部工具来映射数据和创建文件。
答案 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) } ));