我的输入数据结构如下:
<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阅读它。
答案 0 :(得分:0)
您可以通过多种方式执行此操作,具体取决于您是否要自行解析Xml。
您可以使用Sax
(或StAx
)解析器和3个地图按Camera
,Manufacturer
和Size
存储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。