Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将XML从一种结构转换为另一种结构_Java_Xml_Xslt_Xpath_Xmlstreamreader - Fatal编程技术网

Java 将XML从一种结构转换为另一种结构

Java 将XML从一种结构转换为另一种结构,java,xml,xslt,xpath,xmlstreamreader,Java,Xml,Xslt,Xpath,Xmlstreamreader,我想转换以下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

我想转换以下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>

12345A2HC101
布雷迪欧洲英语。数据收集与分析;条码扫描器&;硬件“
webFolder/images/productXSmall.gif(image@filename)
清单说明
webFolder/images/productXLarge.gif(image@filename)
长描述

“so product”需要转换为“stockItem”。属性“part_number”的值需要包含在“reference”标记中。“image”标记中的属性“filename”的值需要包含在“webListingImageUF”标记中。如何做到这一点?我的xml文件大小是29MB,其中包含大量“so_产品”“获得重复

我尝试使用XPath,出现了一个内存错误。目前,我正在使用javax.xml.stream尝试这个方法 接口XMLStreamReader,这里我首先将标记名转换为我想要的标记名(例如“so_product”转换为“stockItem”,“image”转换为“reference”),现在我想在“reference”标记中包含“part_number”属性值


请帮我解决问题。我想在今天之前提交这个问题。

用几行XSLT就可以解决这个问题,但您没有提供足够的细节来了解转换的任何方面是否很棘手:很难看到输入和输出之间的关系。29Mb现在对XSLT来说不是问题。

用几行XSLT就可以解决这一问题,但您没有提供足够的细节来了解转换的任何方面是否很棘手:很难看到输入和输出之间的关系。29Mb现在对XSLT来说不是问题。

我的xml文件大小是29Mb,其中有很多so_产品标记重复。xml文件中有4851+6518+6704+3244个标记需要转换为。属性“零件号”的值需要包含在标签“参考标签”中。“image”标记中的属性“filename”的值需要包含在“webListingImageUF”标记中。如何才能做到这一点?我的xml文件大小是29MB,其中有很多get重复。到目前为止,您尝试了什么?我们不会为您编写代码,但会帮助您修复遇到的任何特定错误。顺便说一句,我本可以使用XSL来实现这一点,但是对于XML转换,XSLT几乎总是一个不错的选择(我应该说是最好的选择)。XSLT是一种专门针对这个主要用例设计的语言。今天的XSLT处理器能够处理多兆字节的XML文档(甚至可以成功处理几百兆字节的文档)。我的XML文件的文件大小是29MB,其中有很多重复的产品标记。XML文件中有4851+6518+6704+3244个标记需要转换为。属性“零件号”的值需要包含在标签“参考标签”中。“image”标记中的属性“filename”的值需要包含在“webListingImageUF”标记中。如何才能做到这一点?我的xml文件大小是29MB,其中有很多get重复。到目前为止,您尝试了什么?我们不会为您编写代码,但会帮助您修复遇到的任何特定错误。顺便说一句,我本可以使用XSL来实现这一点,但是对于XML转换,XSLT几乎总是一个不错的选择(我应该说是最好的选择)。XSLT是一种专门针对这个主要用例设计的语言。今天的XSLT处理器能够处理多兆字节的XML文档(甚至可以成功处理几百兆字节的文档)。