如何修改分配给字符串的xml值中的值?

时间:2017-06-01 21:52:27

标签: java web-services

我从Web服务调用接收xml有效负载,并在String中分配。这个xml有10个元素,我需要将logtime的值更改为我想要的任何值。由于这是一个String,有没有办法改变任何元素的值。

这是我的第一个java代码,如果您需要更多解释请告诉我。

String xml = dto.getAuditTrail();

Xml

enter image description here

我想知道如何将logtime的时间值更改为另一种格式,因为整个xml是一个字符串?

请帮忙,因为我是新手。

由于

1 个答案:

答案 0 :(得分:0)

您需要解析String以获取可以通过标记读取的Document对象。

Here你可以找到如何解析你的字符串,然后使用Document对象你能够读取特定的标记:

public void readDocument(Document doc) {
    try{
        NodeList nList = doc.getElementsByTagName("Event");

        System.out.println("----------------------------");

        for (int temp = 0; temp < nList.getLength(); temp++) {

            Node nNode = nList.item(temp);

            System.out.println("\nCurrent Element :" + nNode.getNodeName());

            if (nNode.getNodeType() == Node.ELEMENT_NODE) {

                Element eElement = (Element) nNode;

                System.out.println("LogTime : " + eElement.getElementsByTagName("logTime").item(0).getTextContent());
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Source here

这是xml读取的基本方法,但您也可以直接编辑xml:

public void editDocument() {
    try{
        NodeList nList = doc.getElementsByTagName("Event");

        System.out.println("----------------------------");

        for (int temp = 0; temp < nList.getLength(); temp++) {

            Node nNode = nList.item(temp);

            System.out.println("\nCurrent Element :" + nNode.getNodeName());

            if (nNode.getNodeType() == Node.ELEMENT_NODE) {

                Element eElement = (Element) nNode;

                Node logTimeNode = eElement.getElementsByTagName("logTime").item(0);
                String logTimeString = logTimeNode.getTextContent();
                // Do some stuff with logTimeString
                logTimeNode.setTextContent(logTimeString);
            }
        }
        // write the content into xml file
        String filepath = "/path/to/file.xml";
        TransformerFactory transformerFactory = TransformerFactory
        .newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        DOMSource source = new DOMSource(doc);
        StreamResult result = new StreamResult(new File(filepath));
        transformer.transform(source, result);
    } catch (Exception e) {
        e.printStackTrace();
    }
}