setTextContent在我这边不起作用

时间:2017-08-03 06:36:25

标签: java selenium

我有一个文档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>

coluld有人提出任何建议吗?

1 个答案:

答案 0 :(得分:0)

一旦使用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);