我有這樣一個一個xml的列表:爲了像XML架構的Java
<?xml version="1.0" encoding="UTF-8"?>
<plane>
<part>
<desc>qwe</desc>
<qty>1</qty>
</part>
<part>
<desc>asd</desc>
<qty>1</qty>
<part>
<desc>asdfg</desc>
<qty>1</qty>
</part>
<part>
<desc>asdfg</desc>
<qty>4</qty>
</part>
</part>
<part>
<desc>zxc</desc>
<qty>2</qty>
</part>
<part>
<desc>AAAA</desc>
<qty>1</qty>
<part>
<desc>BBBB</desc>
<qty>1</qty>
<part>
<desc>CCCC</desc>
<qty>13</qty>
<part>
<desc>DDDD</desc>
<qty>12</qty>
<part>
<desc>EEEE</desc>
<qty>21</qty>
</part>
</part>
</part>
<part>
<desc>CCCC1111</desc>
<qty>13</qty>
<part>
<desc>DDDD1111</desc>
<qty>12</qty>
<part>
<desc>EEEE1111</desc>
<qty>21</qty>
</part>
</part>
</part>
</part>
<part>
<desc>G</desc>
<qty>1</qty>
<part>
<desc>H</desc>
<qty>13</qty>
<part>
<desc>I</desc>
<qty>12</qty>
</part>
</part>
</part>
</part>
</plane>
現在我想將其打印出來的「相同」的結構。我創建了一個方法,但輸出不同於expectes: Run。類
public class Run {
public static void itarate(List<Part> list){
for (int i = 0; i<list.size(); i++){
System.out.println(list.get(i).getDesc() + " x " + list.get(i).getQty());
if (list.get(i).getListParts() != null){
System.out.print(" -- ");
itarate(list.get(i).getListParts());
}
}
}
public static void main(String[] args) {
Converter converter = new XML_Converter();
Plane plane = converter.readFile();
//System.out.println(plane);
List<Part> parts = plane.getPlaneParts();
itarate(parts);
}
}
輸出:
qwe x 2
AAAA x 1
BBBB x 1
CCCC x 13
DDDD x 12
EEEE x 21
CCCC1111 x 13
DDDD1111 x 12
EEEE1111 x 21
G x 1
H x 13
I x 12
,但其實我是想是這樣的:
qwe x 2
AAAA x 1
BBBB x 1
CCCC x 13
DDDD x 12
EEEE x 21
CCCC1111 x 13
DDDD1111 x 12
EEEE1111 x 21
G x 1
H x 13
I x 12
XML對象類:
public class XML_Converter{
private String filePath = "D:\\file.xml";
private File file = new File(filePath);
@Override
public Plane readFile() {
try {
JAXBContext jaxbContext = JAXBContext.newInstance(Plane.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Plane plane = (Plane) jaxbUnmarshaller.unmarshal(file);
return plane;
} catch (JAXBException e) {
System.out.println("Unable to load file. Try again.");
}
return new Plane();
}
平面類
個@XmlRootElement
public class Plane {
private List<Part> planeParts = null;
@XmlElement(name="part")
public List<Part> getPlaneParts() {
return planeParts;
}
public void setPlaneParts(List<Part> planeParts) {
this.planeParts = planeParts;
}
@Override
public String toString() {
return "Plane [planeParts=" + planeParts + "]";
}
}
Parts.class
public class Part {
private String desc;
private int qty;
private List<Part> listParts = null;
@XmlElement(name="desc")
public String getDesc() {
return desc;
}
@XmlElement(name="part")
public List<Part> getListParts() {
return listParts;
}
@XmlElement(name="qty")
public int getQty() {
return qty;
}
public void setDesc(String desc) {
this.desc = desc;
}
public void setListParts(List<Part> listParts) {
this.listParts = listParts;
}
public void setQty(int qty) {
this.qty = qty;
}
@Override
public String toString() {
return "Part [desc=" + desc + ", qty=" + qty + ", listParts="
+ listParts + "]";
}
}
我怎樣才能做到這一點(所以XML結構是相似的代碼輸出)? 在此先感謝。
包括完整代碼。包括 – hfontanez 2014-11-08 10:06:18
,如你所願 – kamirru 2014-11-08 10:20:01
我認爲有一種方法可以不用遞歸來做到這一點,但它需要改變你的XML結構。另外,我認爲我從最近一直工作的某個地方認識到這個「Plane」XML結構。如果你正在做我認爲你在做的事,恭喜你! – hfontanez 2014-11-08 10:46:15