我从Web服务调用接收xml有效负载,并在String中分配。这个xml有10个元素,我需要将logtime的值更改为我想要的任何值。由于这是一个String,有没有办法改变任何元素的值。
这是我的第一个java代码,如果您需要更多解释请告诉我。
码
String xml = dto.getAuditTrail();
Xml
我想知道如何将logtime的时间值更改为另一种格式,因为整个xml是一个字符串?
请帮忙,因为我是新手。
由于
答案 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();
}
}
这是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();
}
}