将一个XML文档转换为另一个XML文件



我想将一个节点(大约150个)中包含许多元素的XML文档转换为另一个模式略有不同但元素名称基本相同的XML文档。现在,我必须手动映射两个文档之间的每个元素/节点。为此,我必须对150行映射和元素名称进行硬编码。类似这样的东西:

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转换。您可以使用内置的。NET XslCompiledTransform进行转换。使您不必键入代码堆栈。如果你还不知道XSL/XSLT,那么学习它会让你获得简历:)

祝你好运!

使用XSLT转换将旧的xml文档转换为新格式。

XElement。Add有一个接受对象[]的重载。

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

相关内容

  • 没有找到相关文章

最新更新