我需要获得2个节点。
<OrderItem>
+<Product PNR="FFQK2P" Type="Hotel">
+<Product PNR="SACN8L" Type="Flight">
<OrderItem>
每个Product节点都有两个相同的节点。他们是&#34; PriceInfo&#34;和&#34; SearchParameters&#34;。我是从他们那里得到的;
XmlNode xmlHotelPriceInfo = orderItem.ParentNode.SelectSingleNode("OrderItem/Product/PriceInfo");
XmlNode xmlHotelSearchParametes = orderItem.ParentNode.SelectSingleNode("OrderItem/Product/SearchParameters");
所以我附加了节点;
xmlHotel.AppendChild(xmlHotelPriceInfo);
xmlHotel.AppendChild(xmlProductItemInfo);
xmlHotel.AppendChild(xmlHotelSearchParametes);
orderItem.AppendChild(xmlHotel);
该代码完美地创建节点。在第一个产品中;
<Product PNR="FFQK2P" Type="Hotel">
<PriceInfo>
<ProductItemInfo
<SearchParameters>
</Product>
代码在for循环中。在第二个周期;
xmlFlight.AppendChild(xmlFlightPriceInfo);
xmlFlight.AppendChild(xmlProductItemInfo);
xmlFlight.AppendChild(xmlFlightSearchParametes);
orderItem.AppendChild(xmlFlight);
它附加第二个产品。但它从第一个nood中删除了PriceInfo和SearchParameters。它看起来;
<Product PNR="FFQK2P" Type="Hotel">
+<ProductItemInfo>
</Product>
<Product PNR="SACN8L" Type="Flight">
+<PriceInfo>
+<ProductItemInfo>
+<SearchParameters>
</Product>
但我需要得到像;
<Product PNR="FFQK2P" Type="Hotel">
+<PriceInfo>
+<ProductItemInfo>
+<SearchParameters>
</Product>
<Product PNR="SACN8L" Type="Flight">
+<PriceInfo>
+<ProductItemInfo>
+<SearchParameters>
</Product>
为什么会这样?
答案 0 :(得分:2)
通过AppendChild
方法,您只需更改子节点的所有者(父)节点。
看看CloneNode method。
所以你的代码应该类似于:
xmlHotel.AppendChild(xmlHotelPriceInfo);
xmlHotel.AppendChild(xmlProductItemInfo);
xmlHotel.AppendChild(xmlHotelSearchParametes);
orderItem.AppendChild(xmlHotel);
...
xmlFlight.AppendChild(xmlFlightPriceInfo.CloneNode(true));
xmlFlight.AppendChild(xmlProductItemInfo.CloneNode(true));
xmlFlight.AppendChild(xmlFlightSearchParametes.CloneNode(true));
orderItem.AppendChild(xmlFlight);
答案 1 :(得分:0)
http://msdn.microsoft.com/en-us/library/system.xml.xmlnode.appendchild.aspx
首先,您需要CreateElement
然后AppendChild
。