So entfernen Sie Kind-element von XML in java?
Dies ist meine XML-Datei
<?xml version="1.0" encoding ="utf-8" ?>
<mcss>
<quest ans="1">
<question><![CDATA[Write 5x= 3y-1 as linear equation form.]]></question>
<options>
<option><![CDATA[5x-3y+1=0]]></option>
<option><![CDATA[-5x-3y-1=0]]></option>
<option><![CDATA[5x+3y+1=0]]></option>
</options>
<explaination><![CDATA[Recall the linear equation in two variables form.]]></explaination>
</quest>
</mcss>
Ich will einfach nur, um zu entfernen 2. eine option aus meiner xml.
Mein java-code entfernen alle option vom meinem Optionen element. durch die Verwendung option.getParentElement().removeChild("option");
try {
String path="D://test//n2027_set1.xml";
File structureXml = new File(path);
SAXBuilder saxb = new SAXBuilder();
Document document = saxb.build(structureXml);
Element rootElement = document.getRootElement();
XMLOutputter xmlOutput = new XMLOutputter();
List qestList = rootElement.getChildren();
for (int i = 0; i < qestList.size(); i++) {
Element quesList = (Element) qestList.get(i);
System.out.println(quesList.getAttributeValue("ans"));
//change ans field
quesList.setAttribute("ans", ""+i);
List qList = quesList.getChildren();
for(int a=0;a< qList.size();a++) {
Element ques =(Element) qList.get(a);
if(ques.getAttributeValue("file")!=null){
//read xml
System.out.println(ques.getAttributeValue("file"));
//write xml attribute
//System.out.println(ques.setAttribute("file","dasd"+a));
}
if(ques.getName().equalsIgnoreCase("question")){
//read
System.out.println(ques.getTextTrim());
ques.addContent(new CDATA(ques.getTextTrim()));
}
if (ques.getName().equalsIgnoreCase("options")) {
List optList = ques.getChildren();
for (int k = 0; k < optList.size(); k++) {
Element option = (Element) optList.get(k);
if(option.getName().equalsIgnoreCase("option")){
//read
option.getParentElement().removeChild("option");
}
}
}
if(ques.getName().equalsIgnoreCase("explaination")){
ques.removeContent();
ques.addContent(new CDATA("explaination"+a));
}
}
}
FileOutputStream file=new FileOutputStream(path);
xmlOutput.output(document, file);
}catch (JDOMException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
meiner Ausgabe:
<?xml version="1.0" encoding ="utf-8" ?>
<mcss>
<quest ans="1">
<question><![CDATA[Write 5x= 3y-1 as linear equation form.]]></question>
<options>
</options>
<explaination><![CDATA[Recall the linear equation in two variables form.]]></explaination>
</quest>
</mcss>
aber ich will wie dieser.
<?xml version="1.0" encoding ="utf-8" ?>
<mcss>
<quest ans="1">
<question><![CDATA[Write 5x= 3y-1 as linear equation form.]]></question>
<options>
<option><![CDATA[5x-3y+1=0]]></option>
<option><![CDATA[-5x-3y-1=0]]></option>
</options>
<explaination><![CDATA[Recall the linear equation in two variables form.]]></explaination>
</quest>
</mcss>
InformationsquelleAutor vijayk | 2013-12-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Element.removeChild entfernen wird nur das erste Kind mit dem angegebenen Namen. Sie können Element.removeContent(int index) zu entfernen, die Kind-element von index
oder Element.removeContent(Content Content) zu entfernen bestimmten element.
Sagte Sie, dass Sie möchten, entfernen Sie die zweite option, aber in deinem Beispiel Dritte ist entfernt. Ich bin etwas verwirrt, so ändern Sie den index, wenn nötig.
praktisch ist es die gleiche Frage wieder. Ändern
option
zuquest
und wählen Sie die Option index 0.InformationsquelleAutor default locale
konzentrieren Sie sich nur auf der Schleife und Durchlaufen von der letzten index -1, die ich getan habe in den code.
haben Sie es ausprobiert ? es entfernt die letzten ein
"ja ich hd versucht.
InformationsquelleAutor shreyansh jogi