Skip to main content
Announcements
July 15, NEW Customer Portal: Initial launch will improve how you submit Support Cases. IMPORTANT DETAILS
cancel
Showing results for 
Search instead for 
Did you mean: 
veryimportantdude
Contributor III
Contributor III

XML extract sub elements

Hello

I have a xml where i have to extract nested fields inside my products and put them into one field.

here is the example

 <izdelki>

<izdelek st="2">

   <izdelekID>001068</izdelekID>

   <VendorItemNo.>C31C163272</VendorItemNo.>

   <WarrantyCustomer>12M</WarrantyCustomer>

   <izdelekIme><![CDATA[Blagajniški matrični tiskalnik EPSON TM-U295]]></izdelekIme>

   <opis><![CDATA[Združite kakovost in prilagodljivost z najmanjšim tiskalnikom potrdil na svetu.]]></opis>

   <url><![CDATA[https://www.avtera.si/cat/product/001068]]></url>

   <dodatneLastnosti>

    <lastnost naziv="Število iglic"><![CDATA[Linijski]]></lastnost>

    <lastnost naziv="Število iglic dodatno"><![CDATA[, 7-iglični ]]></lastnost>

    <lastnost naziv="Povezljivost"><![CDATA[Serijski]]></lastnost>

    <lastnost naziv="Tiskanje več kopij"><![CDATA[1 izvirnik + 2 kopiji]]></lastnost>

    <lastnost naziv="Hitrost tiskanja"><![CDATA[1,90 ~ 2,30 vrstic/s]]></lastnost>

    <lastnost naziv="Podajanje papirja"><![CDATA[spredaj noter, spredaj ven]]></lastnost>

    <lastnost naziv="Neskončni papir"><![CDATA[ne]]></lastnost>

    <lastnost naziv="Tabela znakov"><![CDATA[437]]></lastnost>

    <lastnost naziv="Mere (Š x V x G)"><![CDATA[180? x 102 x 1091 mm]]></lastnost>

    <lastnost naziv="Teža"><![CDATA[1,6 kg]]></lastnost>

    <lastnost naziv="Dodatne informacije"><![CDATA[ni priložen omrežni del (PS-180)]]></lastnost>

    <lastnost naziv="Garancija v mesecih"><![CDATA[12]]></lastnost>

   </dodatneLastnosti>

   <dodatneSlike />

   <cenaAkcijska />

   <davcnaStopnja>22</davcnaStopnja>

   <kategorija id="TI">Tiskalniki</kategorija>

   <blagovnaZnamka id="E1">EPSON</blagovnaZnamka>

   <skupinaIzdelka id="MA">Matrični tiskalniki</skupinaIzdelka>

   <dobava id="1">ni zaloge</dobava>

   <zaloga>0</zaloga>

   <EAN>8715946319667</EAN>

  </izdelek>

<izdelek st="3">

   <izdelekID>001068</izdelekID>

   <VendorItemNo.>C31C163272</VendorItemNo.>

   <WarrantyCustomer>12M</WarrantyCustomer>

   <izdelekIme><![CDATA[Blagajniški matrični tiskalnik EPSON TM-U295]]></izdelekIme>

   <opis><![CDATA[Združite kakovost in prilagodljivost z najmanjšim tiskalnikom potrdil na svetu.]]></opis>

   <url><![CDATA[https://www.avtera.si/cat/product/001068]]></url>

   <dodatneLastnosti>

    <lastnost naziv="Število iglic"><![CDATA[Linijski]]></lastnost>

    <lastnost naziv="Število iglic dodatno"><![CDATA[, 7-iglični ]]></lastnost>

    <lastnost naziv="Povezljivost"><![CDATA[Serijski]]></lastnost>

    <lastnost naziv="Tiskanje več kopij"><![CDATA[1 izvirnik + 2 kopiji]]></lastnost>

    <lastnost naziv="Hitrost tiskanja"><![CDATA[1,90 ~ 2,30 vrstic/s]]></lastnost>

    <lastnost naziv="Podajanje papirja"><![CDATA[spredaj noter, spredaj ven]]></lastnost>

    <lastnost naziv="Neskončni papir"><![CDATA[ne]]></lastnost>

    <lastnost naziv="Tabela znakov"><![CDATA[437]]></lastnost>

    <lastnost naziv="Mere (Š x V x G)"><![CDATA[180? x 102 x 1091 mm]]></lastnost>

    <lastnost naziv="Teža"><![CDATA[1,6 kg]]></lastnost>

    <lastnost naziv="Dodatne informacije"><![CDATA[ni priložen omrežni del (PS-180)]]></lastnost>

    <lastnost naziv="Garancija v mesecih"><![CDATA[12]]></lastnost>

   </dodatneLastnosti>

   <dodatneSlike />

   <cenaAkcijska />

   <davcnaStopnja>22</davcnaStopnja>

   <kategorija id="TI">Tiskalniki</kategorija>

   <blagovnaZnamka id="E1">EPSON</blagovnaZnamka>

   <skupinaIzdelka id="MA">Matrični tiskalniki</skupinaIzdelka>

   <dobava id="1">ni zaloge</dobava>

   <zaloga>0</zaloga>

   <EAN>8715946319667</EAN>

  </izdelek>

 </izdelki>

So I have 2 entities izdelek, where I have to get almost all the fields, but for the <dodatneLastnosti> there are <lastnost > inside

I need to get the

all sthe elements and merge them and put into one field

So he end result would be:

Število iglic: Linijski

Število iglic dodatno: 7-iglični

Povezljivost: Serijski

Tiskanje več kopij: 1 izvirnik + 2 kopiji

etc.

the problem is that thsi attriutes can vary therefore I just need to loop trough and merge.

I hope I was clear.

Any suggestions?

Thank you.

Labels (3)
3 Replies
Anonymous
Not applicable

If I have understood you correctly, you want an output like this.......

 

001068|Blagajniški matrični tiskalnik EPSON TM-U295|Število iglic: Linijski

001068|Blagajniški matrični tiskalnik EPSON TM-U295|Število iglic dodatno: , 7-iglični 

001068|Blagajniški matrični tiskalnik EPSON TM-U295|Povezljivost: Serijski

001068|Blagajniški matrični tiskalnik EPSON TM-U295|Tiskanje več kopij: 1 izvirnik + 2 kopiji

001068|Blagajniški matrični tiskalnik EPSON TM-U295|Hitrost tiskanja: 1,90 ~ 2,30 vrstic/s

001068|Blagajniški matrični tiskalnik EPSON TM-U295|Podajanje papirja: spredaj noter, spredaj ven

001068|Blagajniški matrični tiskalnik EPSON TM-U295|Neskončni papir: ne

001068|Blagajniški matrični tiskalnik EPSON TM-U295|Tabela znakov: 437

001068|Blagajniški matrični tiskalnik EPSON TM-U295|Mere (Š x V x G): 180? x 102 x 1091 mm

001068|Blagajniški matrični tiskalnik EPSON TM-U295|Teža: 1,6 kg

001068|Blagajniški matrični tiskalnik EPSON TM-U295|Dodatne informacije: ni priložen omrežni del (PS-180)

001068|Blagajniški matrični tiskalnik EPSON TM-U295|Garancija v mesecih: 12

001068|Blagajniški matrični tiskalnik EPSON TM-U295|Število iglic: Linijski

001068|Blagajniški matrični tiskalnik EPSON TM-U295|Število iglic dodatno: , 7-iglični 

001068|Blagajniški matrični tiskalnik EPSON TM-U295|Povezljivost: Serijski

001068|Blagajniški matrični tiskalnik EPSON TM-U295|Tiskanje več kopij: 1 izvirnik + 2 kopiji

001068|Blagajniški matrični tiskalnik EPSON TM-U295|Hitrost tiskanja: 1,90 ~ 2,30 vrstic/s

001068|Blagajniški matrični tiskalnik EPSON TM-U295|Podajanje papirja: spredaj noter, spredaj ven

001068|Blagajniški matrični tiskalnik EPSON TM-U295|Neskončni papir: ne

001068|Blagajniški matrični tiskalnik EPSON TM-U295|Tabela znakov: 437

001068|Blagajniški matrični tiskalnik EPSON TM-U295|Mere (Š x V x G): 180? x 102 x 1091 mm

001068|Blagajniški matrični tiskalnik EPSON TM-U295|Teža: 1,6 kg

001068|Blagajniški matrični tiskalnik EPSON TM-U295|Dodatne informacije: ni priložen omrežni del (PS-180)

001068|Blagajniški matrični tiskalnik EPSON TM-U295|Garancija v mesecih: 12

 

Obviously, some of the data is missing as I didn't collect every field....just 2 fields within the the outer loops and then the dodatneLastnosti data.

 

I did it like this....

 

0695b00000RhRFbAAN.png 

The tFileInputXML is configured like this....

 

0695b00000RhRCEAA3.png 

Notice the "Loop XPath query" is set to the outer loop. When extracting the data inside that, notice that I am asking to "Get Nodes" from the dodatneLastnosti element.

 

0695b00000RhRFvAAN.png 

In the tExtractXMLField component, I am setting the XML Field to be the dodatneLastnosti data we extracted in the last component. The Loop XPath query is set to the sub-XML represented by that data.

 

I then leave the columns I extracted previously empty in the XPath query columns, but add a new query to the dodatneLastnosti column (in orange) and add a new column called "naziv" to get the attribute. See the value in the green box.

 

After this is done, the dodatneLastnosti and naziv columns are simply merged using a tMap.

veryimportantdude
Contributor III
Contributor III
Author

Hello. Thanks for this.

 

Yeah kind of... although all the "dodatne lastnosti" have to be merged into one string

 

so the outcome is

001068|Blagajniški matrični tiskalnik EPSON TM-U295| " Število iglic: Linijski Število iglic dodatno: , 7-iglični Povezljivost: Serijski "

 

Could be separated by \r\n or ; or smth

 

I can do this with group element I think

veryimportantdude
Contributor III
Contributor III
Author

Menaged to do it. I added tAggregateRow to concatenate all the stings. Thank you very much for this