我有一个文件data.xml,可以在下面找到。 writeXML函数用于设置节点值。
我尝试使用targetNode.setTextContent(strValue),strValue =“ 400.00”来更新节点P2,但是我在xml中仅得到null,节点P2始终为null,从不通过.setTextContent()更新。
我的硒版本是2.40.0
public void writeXML(String strTestName, String strTargetNode, String strValue) throws Exception{
report= new ReportGen();
//get data.xml path
String path = System.getProperty("user.dir") + "\\data.xml";
Document document = load(path);
//get root node
Element root = document.getDocumentElement();
// System.out.println("The root node is:"+root.getTagName());
NodeList nl = root.getChildNodes();
NodeList cnl = null;
org.w3c.dom.Node targetNode = null;
String logStr = null;
String strNodeName = null;
int length = nl.getLength();
try{
for(int i=0; i<length;i++){
targetNode = nl.item(i);
if(targetNode!=null && targetNode instanceof Element && targetNode.getNodeName().equals(strTestName)){
if(targetNode.hasChildNodes()){
cnl = targetNode.getChildNodes();
break;
}else{
assert false;
}
}
}
length = cnl.getLength();
for(int i=0; i<length;i++){
targetNode = cnl.item(i);
strNodeName =targetNode.getNodeName();
if(targetNode!=null&&strNodeName.equals(strTargetNode)){
targetNode.setTextContent(strValue);
break;
}
}
}catch(Exception exception){
logStr=exception.getMessage();
assert false;
}
}
以下是我的data.xml
<SF>
<TC03>
<KAM></KAM>
<PartnerName></PartnerName>
<Product></Product>
<P2></P2>
<P4></P4>
<P5></P5>
</TC03>
</SF>
有人可以提出任何建议吗?
最佳答案
使用setTextContent更改节点值后,必须将文件保存回去
在代码末尾添加类似的内容
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(document);
OutputStream stream = new FileOutputStream(fXmlFile);
StreamResult sresult = new StreamResult(stream);
transformer.transform(source, sresult);