Java 更新XML字符串
根据给定的XML字符串,我必须更新结束日期值。 即使我在updateNodeValue()方法中更新xml,我的最终输出xml与输入xml相同 有人能告诉我这个密码有什么错误吗Java 更新XML字符串,java,xml,dom,xml-parsing,Java,Xml,Dom,Xml Parsing,根据给定的XML字符串,我必须更新结束日期值。 即使我在updateNodeValue()方法中更新xml,我的最终输出xml与输入xml相同 有人能告诉我这个密码有什么错误吗 import java.io.StringReader; import java.io.StringWriter; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax
import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
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;
import org.xml.sax.InputSource;
public class MyClass{
static String strXml = "<INFO><BeginDate>2013-12-02</BeginDate><EndDate>2014-01-31</EndDate></INFO>";
public static void main(String[] args) throws Exception {
System.out.println(strXml);
Document doc = StringToDocument(strXml);
updateNodeValue(doc);
String newxml = DocumentToString(doc);
System.out.println(newxml);
}
public static void updateNodeValue(Document doc) {
Node rootNode = doc.getFirstChild();
NodeList list = rootNode.getChildNodes();
for (int i = 0; i < list.getLength(); i++) {
Element element = (Element) list.item(i);
Node node = list.item(i);
if ("EndDate".equals(node.getNodeName())) {
element.setNodeValue("2013-12-12");
return;
}
}
}
public static String DocumentToString(Document doc) throws Exception {
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
StringWriter writer = new StringWriter();
transformer.transform(new DOMSource(doc), new StreamResult(writer));
String output = writer.getBuffer().toString();
return output;
}
public static Document StringToDocument(String strXml) throws Exception {
Document doc = null;
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
StringReader strReader = new StringReader(strXml);
InputSource is = new InputSource(strReader);
doc = (Document) builder.parse(is);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
return doc;
}
}
导入java.io.StringReader;
导入java.io.StringWriter;
导入javax.xml.parsers.DocumentBuilder;
导入javax.xml.parsers.DocumentBuilderFactory;
导入javax.xml.transform.OutputKeys;
导入javax.xml.transform.Transformer;
导入javax.xml.transform.TransformerFactory;
导入javax.xml.transform.dom.DOMSource;
导入javax.xml.transform.stream.StreamResult;
导入org.w3c.dom.Document;
导入org.w3c.dom.Element;
导入org.w3c.dom.Node;
导入org.w3c.dom.NodeList;
导入org.xml.sax.InputSource;
公共类MyClass{
静态字符串strXml=“2013-12-022014-01-31”;
公共静态void main(字符串[]args)引发异常{
System.out.println(strXml);
文档doc=StringToDocument(strXml);
更新贬值(doc);
字符串newxml=DocumentToString(doc);
System.out.println(newxml);
}
公共静态void updateNodeValue(文档文档){
Node rootNode=doc.getFirstChild();
NodeList list=rootNode.getChildNodes();
对于(int i=0;i
在updateNodeValue
方法中使用element.setTextContent(…)
。应该使用的方法不是setNodeValue()
,而是setTextContent()
请参见最初,此更改有效,一旦我将这段代码导入到实际的项目中,我就会收到以下错误:“类型元素的方法setTextContent(String)未定义”