java 动态修改xml文件

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <interfaceDevice code="interfaceDeviceData">
       <subsystem code="deviceData"    ip="http://127.0.0.1:8080/" url="tms/tmsDevice/add"></subsystem>
    </interfaceDevice>
</root>
 @Override
    public List<InterfaceRouteEntity> getInterfaceDevice() {
        List<InterfaceRouteEntity> routeList = new ArrayList<>();

        try {
            String xmlConfigPath = xmlConfig + "tmsxmlconfig/InterfaceDevice.xml";
            File xmlFile = new File(xmlConfigPath);
            if (!xmlFile.exists()) {
                xmlFilesUntils.copyDir("static/config/InterfaceDevice.xml", xmlConfigPath);
            }
            String value = "";
            //读取XML文件,获得document对象
            SAXReader reader = new SAXReader();
            Document document = reader.read(new File(xmlConfigPath));
            //获得某个节点的属性对象
            Element rootElem = document.getRootElement();
            //首先要知道自己要操作的节点。
            List<Element> pList = rootElem.elements("interfaceDevice");
            for (Element itme : pList) {
                List<Element> contactList = itme.elements("subsystem");
                for (Element e : contactList) {
                    InterfaceRouteEntity routeModel = new InterfaceRouteEntity();
                    Attribute urlAttr = e.attribute("url");
                    Attribute ipAttr = e.attribute("ip");
                    Attribute idAttr = e.attribute("code");
                    Attribute pIdAttr = itme.attribute("code");
                    routeModel.setUrl(ipAttr.getValue() + urlAttr.getValue());
                    routeModel.setCode(idAttr.getValue());
                    routeModel.setPCode(pIdAttr.getValue());
                    routeList.add(routeModel);
                    System.out.println("接口=====================" + routeModel);
                }
            }

            return routeList;
        } catch (Exception ex) {
            LogUtils.error("读取转发路由失败!" + ex.getMessage());
            throw new RuntimeException("读取转发路由失败");
        }
    }
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class InterfaceRouteEntity {

    @ApiModelProperty(value="url",name="路径")
    private String url;
    @ApiModelProperty(value="code",name="对应的标识")
    private String code;
    @ApiModelProperty(value="pCode",name="父级对应的标识")
    private String pCode;
}

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.List;

@Component
public class ReadConfigurationFile {

    @Autowired
    private TmsDataReceptionService recordIdentAlarmInterfaceService;

    public static List<InterfaceRouteEntity> forwardDeviceList = new ArrayList<>();

    @PostConstruct
    public void init() {

        try {
            forwardDeviceList = recordIdentAlarmInterfaceService.getInterfaceDevice();
        }
        catch(Exception ex)
        {
            LogUtils.error("读取转地址失败!" + ex.getMessage());
            throw ex;
        }
    }

}

    @ApiOperation(value = "测试V1接口")
    @RequestMapping(value = "/forward", method = RequestMethod.POST)
    public RetMsgModel forwardDevice(@RequestBody String data){
        RetMsgModel model = new RetMsgModel();
        try {
            if (data != null) {
                String code="interfaceDeviceData";
                List<InterfaceRouteEntity> interfaceRouteEntity= ReadConfigurationFile.forwardDeviceList.stream().filter(a->a.getPCode().equals(code)).collect(Collectors.toList());
                /*调用后台转发方法转发数据*/
                Boolean bl = tmsDataReceptionService.forwardDevice(data, interfaceRouteEntity);
                if (bl==true)
                {
                    model.setStatus(0);
                    model.setMsg("数据转发已处理");
                }else
                {
                    model.setStatus(1);
                    model.setMsg("数据转发失败");
                }
            } else {
                model.setStatus(1);
                model.setMsg("对象转字典结果为null,请检查数据体");
            }
            return model;
        }catch (Exception ex)
        {
            LogUtils.error("数据转发异常 :" + ex.getMessage());
            model.setStatus(1);
            model.setMsg("数据转发异常");
            return model;
        }
    }


import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;


@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class RetMsgModel {

    /**状态码*/
    @ApiModelProperty(value="Status",name="状态码")
    private int Status;
    /**返回消息*/
    @ApiModelProperty(value="Msg",name="返回消息")
    private String Msg;
    /**驱动需要TMS返回的其他数据信息*/
    @ApiModelProperty(value="Data",name="数据体")
    private Object Data;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用Java中的DOM解析器来修改XML文件中的标签。以下是一个示例代码,用于将XML文件中的一个标签修改为指定的值: ```java import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class ModifyXML { public static void main(String[] args) { try { String filepath = "path/to/xmlfile.xml"; File xmlFile = new File(filepath); DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); Document doc = docBuilder.parse(xmlFile); // Get the root element Node root = doc.getDocumentElement(); // Get the element by tag name NodeList nodes = root.getElementsByTagName("tagname"); // Update the tag value for (int i = 0; i < nodes.getLength(); i++) { Element element = (Element) nodes.item(i); element.setTextContent("newvalue"); } // Write the updated document to file TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new File(filepath)); transformer.transform(source, result); System.out.println("XML file updated successfully"); } catch (ParserConfigurationException pce) { pce.printStackTrace(); } catch (TransformerException tfe) { tfe.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } } ``` 在上面的代码中,我们首先使用DocumentBuilder和DocumentBuilderFactory类来解析XML文件。然后,我们获取根元素并使用getElementsByTagName方法获取要修改的元素列表。我们在循环中遍历这些元素,并使用setTextContent方法将其文本内容设置为新的值。最后,我们使用Transformer类将更新后的文档写回到原始XML文件中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南大白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值