如何将xml解析为hashmap?

如何将xml解析为hashmap?,第1张

如何将xml解析为hashmap?

使用

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>


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5093927.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-16
下一篇2022-11-16

发表评论

登录后才能评论

评论列表(0条)

    保存