2012-08-08 5 views
0

두 개의 스트림을 포함하는 두 부분으로 각각 xml을 나눠 넣고 싶습니다. 4 개가 들어있는 제품이 있습니다. xpath 또는 xpath-node를 사용하여이를 달성 할 수있는 방법이 있습니까?xml 반으로 나누어

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

4 부분으로 제품을 나눕니다. 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

+0

12 제품이 너무 4 제품의 3 일괄, 아니 반 – Rahul

+0

만약 내가 절반 괜찮아 질 것 너무. 지금까지는. 그러나 이전의 코멘트 요구 사항은 더 좋을 것이다. 감사 : – Rahul

답변

2

당신은 요소의 홀수가있는 경우, 제품 요소의 수를 계산 한 다음 반올림 2. round 기능에 의해 그것을 나눌 count(/stream.PurchaseOrder/orderLine/products/stream.Product)를 사용해야합니다. 그런 다음 다음과 같이 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

+0

실제로 내가 노새에 스플리터를 사용하고 그래서 그 일을 단지 하나의 스트림에서 그것의 분할 발견되는 위치에서 분할됩니다. 제품 노드 – Rahul

+0

하나의 전략은 xml을 분할 할 수 있을까요? 여러 분할기를 사용하여 문제가 있습니다. 원본 데이터가 그대로 남아 있지 않습니까? – Rahul

관련 문제