我需要刪除全部OBJECT使用Java的XML文件中的TAG。我可以刪除OBJECT標記,當我輸入父標記名稱(SPAN)時直接將硬編碼導入源代碼(「span」),但我需要刪除沒有硬編碼父標記的標記。如果我使用硬編碼,則只能刪除範圍內的對象標記範圍標記。我需要刪除所有的在XML中甚至可能在另一個父代標記裏,沒有硬代碼源代碼中的Parent標記。我需要全部刪除對象標記範圍內標記和得分標記在示例XML文件中。對於示例XML文件查看下面的圖片。如何從XML文件中刪除XML標記沒有硬編碼標記名稱
Java程序
public class XmlObject {
public static void main(String[] args) {
String filePath = "/Users/myXml/Sample.xml";
File xmlFile = new File(filePath);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder;
try {
dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlFile);
doc.getDocumentElement().normalize();
deleteElement(doc);
doc.getDocumentElement().normalize();
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("/Users/myXml/Sample_ObjDelete.xml"));
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(source, result);
System.out.println("XML file updated successfully");
} catch (SAXException | ParserConfigurationException | IOException | TransformerException e1) {
e1.printStackTrace();
}
}
private static void deleteElement(Document doc) {
NodeList RootElement = doc.getElementsByTagName("assessmentItem");
int getRootElementLength = RootElement.getLength();
System.out.println("getRootElementLength "+getRootElementLength);
for(int k = 0; k < getRootElementLength; k++){
System.out.println("2");
Node nNode = RootElement.item(0);
Element eElement = (Element) nNode;
NodeList object = eElement.getElementsByTagName("span");
Element obj = null;
for(int i=0; i<object.getLength();i++){
obj = (Element) object.item(i);
int leng = obj.getElementsByTagName("object").getLength();
System.out.println("object:" +leng);
for(int j=0; j<leng;j++){
Node objectNode = obj.getElementsByTagName("object").item(k);
(obj).removeChild(objectNode);
}
}
}
}
}
<qualityTest>
<responseDeclaration>
<correctResponse>
<value>QualityTest</value>
</correctResponse>
</responseDeclaration>
<itemBody>
<sampleTest>
<p>Who is president of uganda?</P>
<span>
<object>
Yoweri Museveni</object>
<span>
<object>
Raúl Castro
</Object>
</span>
</sampleTest>
</itemBody>
<score>
<object>
Yingluck Shinawatra
</Object>
</score>
</qualityTest>
對不起,但我真的不明白你想達到什麼!您是否需要刪除名爲span的所有XmlElements? – ParkerHalo
我需要刪除XML中的對象標籤。即使它可能低於不同的父標籤。請看下面給出的圖片。 –
爵士請編輯您的問題,以XML文件的內容作爲文本,而不是圖像。我們無法在圖片上測試您的代碼。 – VGR