
使用
JAXB从读取
xml并保存为自定义对象。
自定义对象类:
import java.util.List;import javax.xml.bind.annotation.XmlElement;import javax.xml.bind.annotation.XmlElementWrapper;import javax.xml.bind.annotation.XmlRootElement;import javax.xml.bind.annotation.XmlType;@XmlRootElement(name = "Details")@XmlType(propOrder = { "detailA", "detailB" })public class Details { private List<String> detailA; private List<String> detailB; public void setDetailA(List<String> detailA) { this.detailA = detailA; } @XmlElementWrapper(name = "detail-a") @XmlElement(name = "detail") public List<String> getDetailA() { return detailA; } public void setDetailB(List<String> detailB) { this.detailB = detailB; } @XmlElementWrapper(name = "detail-b") @XmlElement(name = "detail") public List<String> getDetailB() { return detailB; }}将数据从xml中提取到对象中,然后根据需要将内容添加到地图中:
public static void main(String[] args) throws JAXBException, FileNotFoundException { System.out.println("Output from our XML File: "); JAXBContext context = JAXBContext.newInstance(Details.class); Unmarshaller um = context.createUnmarshaller(); Details details = (Details)um.unmarshal(new FileReader("details.xml")); List<String> detailA = details.getDetailA(); List<String> detailB = details.getDetailB(); Map<String, String[]> map = new HashMap<String, String[]>(); map.put("detail-a", detailA.toArray(new String[detailA.size()])); map.put("detail-b", detailB.toArray(new String[detailB.size()])); for (Map.Entry<String, String[]> entry : map.entrySet()) { //key "detail a" value={"attribute 1 of detail a","attribute 2 of detail a","attribute 3 of detail a"} System.out.print("Key "" +entry.getKey()+"" value={"); for(int i=0;i<entry.getValue().length;i++){ if(i!=entry.getValue().length-1){ System.out.print("""+entry.getValue()[i]+"","); } else{ System.out.print("""+entry.getValue()[i]+""}"); } } System.out.println(); }}输出将是:
XML文件的输出: 关键字“ detail-a”值= {“详细信息a的属性1”,“详细信息a的属性2”,“详细信息a的属性3”}键“ detail-b”值= {“详细信息b的属性1”,“详细信息b的属性2”}注意:这仅适用于您在问题中作为输入提供的xml,如果您需要添加诸如此类的更多详细信息
detail-c,则还必须在自定义对象中定义它们。
使用的XML:
<?xml version="1.0" encoding="utf-8"?><Details> <detail-a> <detail>attribute 1 of detail a</detail> <detail>attribute 2 of detail a</detail> <detail>attribute 3 of detail a</detail> </detail-a> <detail-b> <detail>attribute 1 of detail b</detail> <detail>attribute 2 of detail b</detail> </detail-b></Details>
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)