Как закрыть файл парсера vtdxml - PullRequest
0 голосов
/ 04 июля 2019

Я анализирую файл с помощью парсера vtdxml и хочу удалить его после анализа, но код все еще использует его после анализа. Я пробовал vg.clear, но это не помогает. Ниже мой код, пожалуйста, помогите.

public void parseXmlUisngVtd(String xmlFilePath) throws XPathParseException,
  XPathEvalException, NavException, XPathParseExceptionHuge, XPathEvalExceptionHuge, NavExceptionHuge {

    VTDGenHuge vg = new VTDGenHuge();
    vg.parseFile(xmlFilePath, true, 1);
    VTDNavHuge vn = vg.getNav();


    AutoPilotHuge ap = new AutoPilotHuge(vn);
    ap.declareXPathNameSpace(NAMESPACE, NAMESPACE_URL);
    String Subnetid;
    //String Mecontextid;
    ap.selectXPath("/bulkCmConfigDataFile");
    //System.out.println(ap.selectXPath("/bulkCmConfigDataFile/configData"));
    int val;
    while (ap.evalXPath() != -1) {
      vn.push();
      if (vn.toElement(VTDNav.FIRST_CHILD, "configData")) {
        if ((val = vn.getAttrVal("dnPrefix")) != -1) {
          //System.out.println("in");
        }
        // System.out.println(vn.toNormalizedString(val));
        do {
          if (vn.toElement(VTDNav.FIRST_CHILD, "xn:SubNetwork")) {

            do {
              if ((val = vn.getAttrVal("id")) != -1) {
                //  System.out.println("Id:" + vn.toNormalizedString(val));

              }
              Subnetid = vn.toNormalizedString(val);
              //String subt = Subnetid;
              //String adin="";
              String outer = "";
              String rnc = "";
              //  System.out.println(Subnetid);
              //if(subt.equalsIgnoreCase(idnet)) {
              if (vn.toElement(VTDNav.FIRST_CHILD, "xn:MeContext")) {
                do {

                  if ((val = vn.getAttrVal("id")) != -1) {
                    //System.out.println("me context Id:" + vn.toNormalizedString(val));
                  } 
                  //Mecontextid=vn.toNormalizedString(val);

                  if (vn.toElement(VTDNav.FIRST_CHILD, "xn:ManagedElement")) {
                    if (vn.toElement(VTDNav.FIRST_CHILD, "xn:VsDataContainer")) {


                      do {

                        // if((val = vn.getAttrVal("id")) != -1){
                        //     //     System.out.println("me context Id:" + vn.toNormalizedString(val));
                        //   }System.out.println(vn.toNormalizedString(val)); 

                        if (vn.toElement(VTDNav.FIRST_CHILD, "xn:VsDataContainer")) {


                          do {

                            if ((val = vn.getAttrVal("id")) != -1) {
                              //System.out.println("me context Id:" + vn.toNormalizedString(val));
                            } 
                            //System.out.println(vn.toNormalizedString(val)); 
                            String comp = (vn.toNormalizedString(val));
                            //String str=vn.toNormalizedString(val);
                            String inner = "";
                            String gsmid = "";
                            if (comp.startsWith("TU") || comp.startsWith("VU")) {

                              if (vn.toElement(VTDNav.FIRST_CHILD, "xn:VsDataContainer")) {
                                do {
                                  if ((val = vn.getAttrVal("id")) != -1) {
                                    //System.out.println("me context Id:" + vn.toNormalizedString(val));
                                  } 
                                  //System.out.println(vn.toNormalizedString(val)); 
                                  String comp1 = (vn.toNormalizedString(val));
                                  // String str=vn.toNormalizedString(val);
                                  if (comp1.contains("TU") || comp1.contains("VU")) {
                                    if (vn.toElement(VTDNav.FIRST_CHILD, "xn:attributes")) {
                                      if (vn.toElement(VTDNav.FIRST_CHILD, "es:vsDataCoverageRelation")) {

                                        vn.toElement(VTDNav.FIRST_CHILD, "es:coverageIndicator");
                                        vn.toElement(VTDNav.PARENT, "es:vsDataCoverageRelation");
                                        String add = (" <xn:VsDataContainer id=\"" + comp1 + "\" modifier=\"create\">\r\n" +
                                          "                <xn:attributes>\r\n" +
                                          "                  <xn:vsDataType>vsDataCoverageRelation</xn:vsDataType>\r\n" +
                                          "                  <xn:vsDataFormatVersion>EricssonSpecificAttributes</xn:vsDataFormatVersion>\r\n" +
                                          "                  <es:vsDataCoverageRelation>\r\n" +
                                          "                 <es:inId>" + comp1 + "</es:inId>\r\n" +
                                          "                    <es:coverageIndicator>" + coverageIndicator + "</es:coverageIndicator>\r\n" +
                                          "                        <es:hsIflsDownswitch>" + hsIflsDownswitch + "</es:hsIflsDownswitch>\r\n" +
                                          "                        <es:hsPathlossThreshold>" + hsPathlossThreshold + "</es:hsPathlossThreshold>\r\n" +
                                          "                        <es:relationCapability>\r\n" +
                                          "                          <es:powerSave>" + powerSave + "</es:powerSave>\r\n" +
                                          "                          <es:dchLoadSharing>" + dchLoadSharing + "</es:dchLoadSharing>\r\n" +
                                          "                          <es:hsCellSelection>" + hsCellSelection + "</es:hsCellSelection>\r\n" +
                                          "                          <es:hsLoadSharing>" + hsLoadSharing + "</es:hsLoadSharing>\r\n" +
                                          "                        </es:relationCapability>\r\n" +
                                          "                     <es:utranCellRef>" + utranCellRef + "</es:utranCellRef>\r\n" +
                                          "                  </es:vsDataCoverageRelation>\r\n" +
                                          "                </xn:attributes>\r\n" +
                                          "              </xn:VsDataContainer>\r\n");

                                        if (!utranCellRef.isEmpty()) {
                                          inner = inner + add;
                                        }

                                        vn.toElement(VTDNav.PARENT, "xn:attributes");
                                      } else if (vn.toElement(VTDNav.FIRST_CHILD, "es:vsDataGsmRelation")) {
                                        //  gsmid=gsmid+comp1;

                                        vn.toElement(VTDNav.PARENT, "xn:attributes");
                                      }
                                      vn.toElement(VTDNav.PARENT, "xn:VsDataContainer");
                                    }

                                  }

                                } while (vn.toElement(VTDNav.NEXT_SIBLING, "xn:VsDataContainer"));

                                vn.toElement(VTDNav.PARENT, "xn:VsDataContainer");
                              }
                              if (!inner.equals("")) {
                                String fin = (" <xn:VsDataContainer id=\"" + comp + "\">\r\n" + inner + "</xn:VsDataContainer>\r\n");
                                outer = outer + fin;
                              }
                              // System.out.println(outer);
                              //   System.out.println("</xn:VsDataContainer>");  

                              // System.out.println(outer);
                              //   System.out.println("</xn:VsDataContainer>");  
                            }


                          } while (vn.toElement(VTDNav.NEXT_SIBLING, "xn:VsDataContainer"));

                          vn.toElement(VTDNav.PARENT, "xn:VsDataContainer");
                        }
                        String a = ("<xn:SubNetwork id=\"" + Subnetid + "\">\r\n");
                        if (!outer.equals("") && !rnc.contains(Subnetid)) {
                          rnc = rnc + Subnetid;
                          String b = ("</xn:SubNetwork>\r\n");
                          String d = ("</bulkCmConfigDataFile>\r\n");
                          String c = ("<bulkCmConfigDataFile xmlns=\"configData.xsd\" xmlns:es=\"EricssonSpecificAttributes.xsd\" xmlns:gn=\"geranNrm.xsd\" xmlns:un=\"utranNrm.xsd\" xmlns:xn=\"genericNrm.xsd\">\r\n");
                          String send = (c + a + outer + b + d);
                          System.out.println("START-" + Subnetid + "-coverage Relation");
                          saveData.saveScriptsData(send, "utranRelation");
                          System.out.println("END-" + Subnetid);
                        }

                      } while (vn.toElement(VTDNav.NEXT_SIBLING, "xn:VsDataContainer"));

                      vn.toElement(VTDNav.PARENT, "xn:ManagedElement");
                    }
                    vn.toElement(VTDNav.PARENT, "xn:MeContext");
                  }
                } while (vn.toElement(VTDNav.NEXT_SIBLING, "xn:MeContext"));


                vn.toElement(VTDNav.PARENT, "xn:SubNetwork");
              }

            } while (vn.toElement(VTDNav.NEXT_SIBLING, "xn:SubNetwork"));
            vn.toElement(VTDNav.PARENT, "configData");
          }

        } while (vn.toElement(VTDNav.NEXT_SIBLING, "configData"));

        vn.toElement(VTDNav.PARENT);
      }
    }
    vg.clear();
    ap.bind(vn);
    ap.clearVariableExprs();
    ap.clearXPathNameSpaces();
  }
}
...