[英]How to add XML String into an existing XML File using JAVA?
我有名為temp.xml的xml文件,內容如下。
<?xml version="1.0" encoding="UTF-8" standalone="no"?><combinedstaff>
<staff><firstname>added firstname</firstname><lastname>added lastname</lastname><nickname>added nickname</nickname><salary>$10,000</salary></staff></combinedstaff>
我有這種方式的xml字符串,
String sampleXML="<staff><firstname>fff</firstname><lastname>lll</lastname><nickname>nnn</nickname><salary>$20,000</salary></staff>";
我需要將此xml字符串附加到上面的xml文件中,以便最終的xml應該看起來像這樣,
<?xml version="1.0" encoding="UTF-8" standalone="no"?><combinedstaff>
<staff><firstname>added firstname</firstname><lastname>added lastname</lastname><nickname>added nickname</nickname><salary>$10,000</salary></staff>
<staff><firstname>fff</firstname><lastname>lll</lastname><nickname>nnn</nickname><salary>$20,000</salary></staff>
</combinedstaff>
我已經用這種方式編碼,但是我得到了一些垃圾字符,例如;<
以這種方式添加到xml字符串中,
<?xml version="1.0" encoding="UTF-8" standalone="no"?><combinedstaff>
<staff><firstname>added firstname</firstname><lastname>added lastname</lastname><nickname>added nickname</nickname><salary>$10,000</salary></staff><staff><staff><firstname>added firstname</firstname><lastname>added lastname</lastname><nickname>added nickname</nickname><salary>$10,000</salary></staff></staff><staff><staff><firstname>added firstname</firstname><lastname>added lastname</lastname><nickname>added nickname</nickname><salary>$10,000</salary></staff></staff><staff><staff><firstname>added firstname</firstname><lastname>added lastname</lastname><nickname>added nickname</nickname><salary>$10,000</salary></staff></staff></combinedstaff>
這是我的代碼,
public class writexml1 {
public static void main (String args[])
{
File docFile = new File(".xml");
Document doc = null;
try
{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
doc = db.parse(docFile);
}
catch (java.io.IOException e)
{
System.out.println("Can't find the file");
}
catch (Exception e)
{
System.out.print("Problem parsing the file.");
}
Element root = doc.getDocumentElement();
System.out.println("The root element is " + root.getNodeName() + ".\n");
NodeList children = root.getChildNodes();
System.out.print("There are "+children.getLength()+" child elements.\n");
System.out.print("They are: \n");
Element staffElement = doc.createElement("staff");
Node updateText = doc.createTextNode("<firstname>added firstname</firstname><lastname>added lastname</lastname><nickname>added nickname</nickname><salary>$10,000</salary></staff>");
staffElement.appendChild(updateText);
root.appendChild(staffElement);
try{
String outputURL = "temp.xml";
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new FileOutputStream(outputURL));
TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer = transFactory.newTransformer();
transformer.transform(source, result);
} catch (Exception e) {
e.printStackTrace();
}
}
}
我該如何解決這個問題? 問題出在哪里?
有人可以幫忙嗎?
不要將嵌套元素添加為文本。
該行:
Node updateText = doc.createTextNode("<firstname>added firstname</firstname><lastname>added lastname</lastname><nickname>added nickname</nickname><salary>$10,000</salary></staff>");
您要執行的操作是將此字符串解析為XML,然后將其附加到CombinedStaff-element。
看看這里有關如何從字符串創建XML的公認答案: 如何從Java中的字符串創建XML對象?
並將該解決方案應用於您的xml字符串:
"<staff><firstname>added firstname</firstname><lastname>added lastname</lastname><nickname>added nickname</nickname><salary>$10,000</salary></staff>"
之后,您將得到的文檔添加到原始XML中。 通過執行以下操作:
Node newNode = doc.importNode(theNewDocument.getDocumentElement() , true); //Need to import prior to appending it
doc.getDocumentElement().appendChild(newNode);
這是使用DOM附加內容而不是嘗試手動添加的更好的解決方案。
嘗試使用
TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer = transFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.transform(source, result);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.