Java创建,解析XML片段文件,无根节点root

1. 创建xml文件
  • 包引用,需要导入如下三个包
    这里写图片描述
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.ArrayList;
import java.util.Collection;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import java.util.concurrent.TimeUnit;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
  • 具体实现
    public String createXmlInfo(String dst_ip) {

        // create xmlInfo pushed to snc
        String xmlStr = null;
        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.newDocument();
            document.setXmlVersion("1.0");

            Element aclGroup = document.createElement("aclGroup");
            document.appendChild(aclGroup);
            Element aclNumOrName = document.createElement("aclNumOrName");
            aclNumOrName.setTextContent("secflow");
            aclGroup.appendChild(aclNumOrName);
            Element aclStep = document.createElement("aclStep");
            aclStep.setTextContent("3");
            aclGroup.appendChild(aclStep);
            Element aclType = document.createElement("aclType");
            aclType.setTextContent("Advance");
            aclGroup.appendChild(aclType);
            Element aclRuleAdv4s = document.createElement("aclRuleAdv4s");
            Element aclRuleAdv4 = document.createElement("aclRuleAdv4");
            Element aclRuleID = document.createElement("aclRuleID");
            aclRuleID.setTextContent("4");
            aclRuleAdv4.appendChild(aclRuleID);
            Element aclProtocol = document.createElement("aclProtocol");
            aclProtocol.setTextContent("0");
            aclRuleAdv4.appendChild(aclProtocol);
            Element aclSourceIp = document.createElement("aclSourceIp");
            aclSourceIp.setTextContent("0.0.0.0");
            aclRuleAdv4.appendChild(aclSourceIp);
            Element aclSrcWild = document.createElement("aclSrcWild");
            aclSrcWild.setTextContent("0.0.0.255");
            aclRuleAdv4.appendChild(aclSrcWild);
            Element aclDestIp = document.createElement("aclDestIp");
            aclDestIp.setTextContent(dst_ip);
            aclRuleAdv4.appendChild(aclDestIp);
            Element aclDestWild = document.createElement("aclDestWild");
            aclDestWild.setTextContent("0.0.0.255");
            aclRuleAdv4.appendChild(aclDestWild);
            Element aclRuleName = document.createElement("aclRuleName");
            aclRuleName.setTextContent("rule1");
            aclRuleAdv4.appendChild(aclRuleName);
            aclRuleAdv4s.appendChild(aclRuleAdv4);
            aclGroup.appendChild(aclRuleAdv4s);

            TransformerFactory transFactory = TransformerFactory.newInstance();
            Transformer transFormer = null;
            try {
                transFormer = transFactory.newTransformer();
            } catch (TransformerConfigurationException e) {
                log.info("{}",e.getMessage());
            }
            DOMSource domSource = new DOMSource(document);
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            try {
                transFormer.transform(domSource, new StreamResult(bos));
            } catch (TransformerException e) {
                log.info("{}",e.getMessage());
            }

            org.dom4j.Document doc = null;
            try {
                doc = DocumentHelper.parseText(bos.toString());
            } catch (DocumentException e) {
                e.printStackTrace();
            }
            String test = doc.node(0).asXML();
            xmlStr = test.replace("<aclGroup>","").replace("</aclGroup>","");
        }
        catch (ParserConfigurationException e) {
            log.info("{}",e.getMessage());
        }

        return xmlStr;
    }
  • 结果:生成xml数据如下
<aclStep>5</aclStep>
<aclType>Advance</aclType>
<aclRuleAdv4s>
     <aclRuleAdv4>
              <aclRuleID>1</aclRuleID>
              <aclProtocol>0</aclProtocol>
              <aclSourceIp>192.168.1.0</aclSourceIp>
              <aclSrcWild>0.0.0.255</aclSrcWild>
              <aclDestIp>192.168.2.0</aclDestIp>
              <aclDestWild>0.0.0.255</aclDestWild>
              <aclRuleName>rule1</aclRuleName>
      </aclRuleAdv4>    
</aclRuleAdv4s>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值