Я анализирую файл с помощью парсера 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();
}
}