2017-06-01 45 views
0

我正在從Web服務調用接收xml有效內容,並將其分配在一個字符串中。這個XML有10個元素,我需要將logtime的值更改爲任何我想要的值。由於這是一個字符串,有沒有辦法改變任何元素的值。如何修改分配給String的xml值中的值?

這是我的第一個java代碼,請讓我知道如果你需要更多的解釋。

代碼

String xml = dto.getAuditTrail(); 

的Xml

enter image description here

我想知道我怎麼能想logTime Description該條的時間值更改爲另一種格式,因爲這整個XML是一個字符串?

請幫忙,因爲我對它很陌生。

感謝

回答

0

你需要分析你的字符串,以獲得一個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(); 
    } 
} 
相關問題