У меня есть несколько xml-записей, как показано ниже
<records>
<record>
<name>SK</name>
<age>30</age>
</record>
<record>
<name>KK</name>
<age>10</age>
</record>
<record>
<name>RK</name>
<age>50</age>
</record>
<record>
<name>KB</name>
<age>15</age>
</record>
</records>
Я использую SAX Parser для проверки записей и исключения возраста <20. Итак, теперь я хочу скопировать записи в другой XML-файл </p>
<records>
<record>
<name>SK</name>
<age>30</age>
</record>
<record>
<name>RK</name>
<age>50</age>
</record>
</records>
Я использовал рекурсивный разбор для извлечения тегов и значений и проверки для записей, имеющих возраст> 20. Однако я застрял в том, как взять только запись с возрастом> 20 и скопировать ее в другой файл.
Может ли кто-нибудь помочь с этим?
Java-код, как показано ниже
// извлекает теги из файла xml
private static void visit(Node node, int level) {
NodeList list = node.getChildNodes();
String nodeName = new String();
String nodeValue = new String();
// System.out.println(list);
for (int i = 0; i < list.getLength(); i++) {
Node childNode = list.item(i);
if (childNode.getNodeType() == Node.ELEMENT_NODE) {
nodeName = childNode.getNodeName().toString();
System.out.println(nodeName);
if (PROPERTY_AGE.equals(nodeName)) {
nodeValue = childNode.getTextContent();
System.out.println(nodeName + " : " + nodeValue.trim());
int age = Integer.parseInt(nodeValue.trim());
if(age>20) {
/*
Here I would need to copy the current xml between <record></record> to another xml file.
How can the entire record be extracted using Java?
*/
}
}
visit(childNode, level + 1);
}
}
}
private static void readXMLFileAnddisplayTags(File inputXMLFile) {
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
DefaultHandler handler = new DefaultHandler();
InputStream inputStream = new FileInputStream(inputXMLFile);
InputSource is = new InputSource(new InputStreamReader(inputStream, "UTF-8"));
is.setEncoding("UTF-8");
Document document = builder.parse(is);
visit(document, 0);
} catch (ParserConfigurationException | SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}