2012-08-08 38 views
0

我想將我的下面的xml分成兩部分,每部分包含兩個stream.Product的4包含,有沒有什麼辦法使用xpath或xp​​ath-node我可以實現這一點,我試過表達式:xml分成兩半

/stream.PurchaseOrder/orderLine/products/stream.Product 

它將產品分爲四部分,any1能否幫助我用表達式或某種技術來達到要求?

<stream.PurchaseOrder> 
    <metaData> 
    <supplierId>1001</supplierId> 
    <supplier>Supplier1</supplier> 
    </metaData> 
    <orderLine> 
    <manufacturer>Manufacturer-1993628836</manufacturer> 
    <location>Location-1616142228</location> 
    <products> 
     <stream.Product> 
     <productId>852693979</productId> 
     <productName>ProductName-20</productName> 
     <price>100</price> 
     <model>Model413</model> 
     <quantity>50</quantity> 
     </stream.Product> 
     <stream.Product> 
     <productId>1111</productId> 
     <productName>ProductName11</productName> 
     <price>40</price> 
     <model>Model12</model> 
     <quantity>150</quantity> 
     </stream.Product> 
     <stream.Product> 
     <productId>85</productId> 
     <productName>ProductName3</productName> 
     <price>10</price> 
     <model>Model3</model> 
     <quantity>5</quantity> 
     </stream.Product> 
     <stream.Product> 
     <productId>11</productId> 
     <productName>ProductName4</productName> 
     <price>4</price> 
     <model>Model4</model> 
     <quantity>15</quantity> 
     </stream.Product> 
    </products> 
    </orderLine> 
</stream.PurchaseOrder> 
+0

會是怎樣的狀況來選擇stream.Product?還是總是減半? (所以如果你有8 stream.Product節點,你想要第一個4和最後4) – rene 2012-08-08 10:06:17

+0

它會像我有12個產品,所以3批4產品,不是一半 – Rahul 2012-08-08 10:10:49

+0

如果你有一半的東西會好起來但是之前的評論要求會更好。感謝:) – Rahul 2012-08-08 10:13:14

回答

2

您需要使用count(/stream.PurchaseOrder/orderLine/products/stream.Product)計算產品元件的數量,然後由2.使用round功能把它圓了,萬一有元素的奇數。然後使用position()功能如下圖所示:

上半年:

/stream.PurchaseOrder/orderLine/products/stream.Product[position()<=round(count(/stream.PurchaseOrder/orderLine/products/stream.Product) div 2)] 

下半年:

/stream.PurchaseOrder/orderLine/products/stream.Product[position()>round(count(/stream.PurchaseOrder/orderLine/products/stream.Product) div 2)] 
+0

嘗試<和>。 – dogbane 2012-08-08 11:48:46

+0

實際上,我在騾子中使用分離器,所以它在分裂的位置被分裂,所以它只在一個流中分裂。產品節點 – Rahul 2012-08-08 12:16:34

+0

不能有一個單一的策略來分裂XML嗎?我有使用多個分離器的問題源數據不會保持不變? – Rahul 2012-08-09 06:01:06