以最有效的方式重新排列XML

时间:2015-05-21 08:04:35

标签: java xml

我的输入数据结构如下:

<Camera ID = 1></Camera>
<Camera ID = 2></Camera>
<Camera ID = 3></Camera>
<Manufacturer ID = 1>A</Manufacturer>
<Manufacturer ID = 2>B</Manufacturer>
<Manufacturer ID = 3>C</Manufacturer>
<Size ID = 1>360</Size>
<Size ID = 2>240</Size>
<Size ID = 3>380</Size>

但我想这样安排:

<Camera ID = 1><Manufacturer>A</Manufacturer><Size>360</Size></Camera>
<Camera ID = 2><Manufacturer>B</Manufacturer><Size>240</Size></Camera>
<Camera ID = 3><Manufacturer>C</Manufacturer><Size>380</Size></Camera>

我被迫这样做,因为返回值的程序异步运行,即第一个函数返回所有名称,然后第二个返回制造商列表等。生成输出的函数在C和I中我正在用Java阅读它。

1 个答案:

答案 0 :(得分:0)

您可以通过多种方式执行此操作,具体取决于您是否要自行解析Xml。

您可以使用Sax(或StAx)解析器和3个地图按CameraManufacturerSize存储ID 1}}。我在想这样的解决方案:

String cameraXml = getAllCameras();
List<Integer> camerasByIds = parseCamera(cameraXml, new CameraSaxHandler());

String manufacturerXml = getAllManufacturers();
Map<Integer, String> manufacturerById = parse(manufacturerXml, new ManufacturerSaxHandler());

String sizeXml = getAllSizes();
Map<Integer, Integer> sizesById = parse(sizeXml, new SizeSaxHandler());

我会让你弄清楚如何编写parse方法。

完成后,您可以轻松地按照结构生成Xml。