转换一个XML文档转换成另一个XML文档
问题描述:
我要转换包含一个节点内的许多元素的XML文档(约150)到另一个XML文档具有稍微不同的模式,但大多具有相同的元素名称。现在,我必须手动映射两个文档之间的每个元素/节点。为此,我将不得不硬编码150行映射和元素名称。事情是这样的:转换一个XML文档转换成另一个XML文档
XElement newOrder = new XElement("Order");
newOrder.Add(new XElement("OrderId", (string)oldOrder.Element("OrderId")),
newOrder.Add(new XElement("OrderName", (string)oldOrder.Element("OrderName")),
...............
...............
...............and so on
的newOrder文档可能包含如果没有在oldOrder发现它们将被设置为null额外的节点。因此,除了硬编码150个元素名称,比如orderId,orderName等,还有其他选择吗?还是有更好的更易维护的方法?
答
改为使用XSLT transform。您可以使用内置的.NET XslCompiledTransform进行转换。让您不必输入堆叠的代码。如果你还不知道XSL/XSLT,那么学习它会给你一些简历:)
祝你好运!
答
使用XSLT转换将旧的xml文档转换为新格式。
答
XElement.Add有一个overload需要object []。
List<string> elementNames = GetElementNames();
newOrder.Add(
elementNames
.Select(name => GetElement(name, oldOrder))
.Where(element => element != null)
.ToArray()
);
//
public XElement GetElement(string name, XElement source)
{
XElement result = null;
XElement original = source.Elements(name).FirstOrDefault();
if (original != null)
{
result = new XElement(name, (string)original)
}
return result;
}
任何好XSLT编辑器? – 2008-10-27 11:12:50