簡體   English   中英

將一個XML文檔轉換為另一個XML文檔

[英]Converting one XML document into another XML document

我想將包含節點內的許多元素(大約150個)的XML文檔轉換為另一個XML文檔,該文檔具有略微不同的模式,但大多數具有相同的元素名稱。 現在我必須手動映射2個文檔之間的每個元素/節點。 為此,我將不得不硬編碼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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM