[英]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.