我有一个文件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);

10-07 16:21