Преобразование XML из одной структуры в другую структуру - PullRequest
0 голосов
/ 27 февраля 2012

Я хочу преобразовать следующую структуру XML

<so_product company="Brady Europe EN" part_number="N008153" category="Brady Europe English.Safety Identification.Pipe Markers &amp; Valve Identification.CLP Pipe Markers" description="CLP Pipe Marker on Roll - Hydrazine 127X33RL-T3-P19" >
<image zip_file_key="1" filename="794640.jpg"/>
<so_product_attribute name="Product Number" value="Hydrazine 127X33RL-T3-P19"/>
<so_product_attribute name="QTY/UOM" value="220/Roll"/>
<so_product_attribute name="Brady Material Number" value="B-7541"/>
<so_product_attribute name="Class" value="Flamable / non flamable liquids / Oils"/>
<so_product_attribute name="Colour" value="White on Brown"/>
<so_product_attribute name="Layout" value="3"/>
<so_product_attribute name="Legend" value="Hydrazine"/>
<so_product_attribute name="Material Type" value="Laminated Polyester"/>
<so_product_attribute name="Size - Height (mm)" value="33"/>
<so_product_attribute name="Size - Width (mm)" value="127"/>
<so_product_attribute name="Type" value="DANGER"/>
<so_product_attribute name="Danger Symbol" value="CLP 2^CLP 6^CLP 8^CLP 5^CLP 9"/>

в следующий формат

<?xml version="1.0" encoding="utf-8"?>

<stockItems>
    <stockItem>
        <reference>12345A2HC101</reference>
        <stockGroup>Brady Europe English.Data Collection &amp; RFID.Barcode Scanners &amp; Hardware"</stockGroup>
        <webListingImageUF>webFolder/images/productXSmall.gif(image@filename)</webListingImageUF>
        <webListingTextOrHTML>Listing description</webListingTextOrHTML>
        <webMoreInfoImageUF>webFolder/images/productXLarge.gif(image@filename)</webMoreInfoImageUF>
        <webMoreInfoTextOrHTML>Long Description</webMoreInfoTextOrHTML> 
    </stockItem>
</stockItems>

", так что product" необходимо преобразовать в "stockItem».значение атрибута "part_number" необходимо включить в тег "reference".значение атрибута «filename», которое находится в теге «image», должно быть включено в тег «webListingImageUF» и т. д. Как это сделать?Мой размер файла xml составляет 29 МБ, где много «so_product» повторяется.

Я попытался использовать XPath, произошла ошибка памяти.В настоящее время я пытаюсь сделать это с помощью интерфейса javax.xml.stream XMLStreamReader. Здесь я сначала преобразовал имена тегов в нужные имена тегов (пример «so_product» в «stockItem», «image» в «reference»)включите значение атрибута "part_number" в тег "reference".

Пожалуйста, помогите мне ... Я хочу отправить это до сегодняшнего дня.

1 Ответ

3 голосов
/ 27 февраля 2012

В нескольких строках XSLT это выглядит довольно простой проблемой, но вы не предоставили достаточно подробностей, чтобы понять, насколько сложны какие-либо аспекты преобразования: трудно увидеть взаимосвязь между вашим входом и выходом , 29Mb в настоящее время не является проблемой для XSLT.

...