Java dom4j读写xml

		<dependency>
			<groupId>org.dom4j</groupId>
			<artifactId>dom4j</artifactId>
			<version>2.1.3</version>
		</dependency>
 /**
     * 解析xml
     *
     * @param xmlString 字符串xml
     * @return Map<String, Object>
     */
    public static Map<String, Object> readXml(String xmlString) {
        Map<String, Object> resMap = new HashMap<>(16);
        //1.创建Reader对象
        SAXReader saxReader = new SAXReader();
        //2.加载xml
        try {
            Document document = saxReader.read(new StringReader(xmlString));
            //3.获取根节点
            Element rootElement = document.getRootElement();
            // rootElement.elements()获取根节点下所有的节点,
            List<Element> elements = rootElement.elements();
            for (Element element : elements) {
                resMap.put(element.getName(), element.getTextTrim());
                //依次获取该节点下的节点
                List<Element> child = element.elements();
                if (!CollectionUtils.isEmpty(child)) {
                    List<Map<String, Object>> childList = new ArrayList<>();
                    for (Element elChild : child) {
                        List<Attribute> attributes = elChild.attributes();
                        Map<String, Object> childMap = new HashMap<>(16);
                        for (Attribute attribute : attributes) {
                            childMap.put(attribute.getName(), attribute.getValue());
                        }
                        childList.add(childMap);
                    }
                    resMap.put("childItem", childList);
                }
            }
        } catch (DocumentException e) {
            e.printStackTrace();
        }

        return resMap;
    }
/**
     * bean转换xml
     *
     * @param robotControlDTO 参数
     * @return
     */
    public static String writeXml(RobotControlDTO robotControlDTO) {
        // 创建document对象
        Document document = DocumentHelper.createDocument();
        // 创建根节点
        Element rootElement = document.addElement("PatrolDevice");
        Element sendCode = rootElement.addElement("SendCode");
        sendCode.setText("192.168.2.99");
        Element receiveCode = rootElement.addElement("ReceiveCode");
        receiveCode.setText("192.168.1.15");
        Element type = rootElement.addElement("Type");
        type.setText(String.valueOf(robotControlDTO.getType()));
        Element code = rootElement.addElement("Code");
        code.setText("");
        Element command = rootElement.addElement("Command");
        command.setText(String.valueOf(robotControlDTO.getCommand()));
        Element time = rootElement.addElement("Time");
        time.setText(dtf.format(LocalDateTime.now()));
        Element items = rootElement.addElement("Items");
        Element item = items.addElement("Item");
        item.addAttribute("value", robotControlDTO.getValue());

        StringWriter stringWriter = new StringWriter(1024);
        // 设置生成xml的格式
        OutputFormat of = OutputFormat.createPrettyPrint();
        // 设置编码格式
        of.setEncoding("UTF-8");

        XMLWriter xmlWriter = new XMLWriter(stringWriter, of);
        try {
            xmlWriter.write(document);
            return stringWriter.toString();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值