我'使用org.w3c.dom.Document中的XML parsing.I在我的服務器就像一個xml文件..在Java中使用文檔中刪除XML中的節點
<query><item access='server1'><item access='server2'><item access='server3'></query>
我會讀這個XML基於文件和一些選項的,我會動態地消除任何一個節點(服務器或服務器2 server(服務器)或)和返回結果爲一個字符串,這樣我可以在我的用戶interface.below的一個表現是代碼
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
documentBuilderFactory.setIgnoringComments(true);
inputStream = new FileInputStream(new File(filename));
org.w3c.dom.Document doc = documentBuilderFactory.newDocumentBuilder().parse(inputStream);
Element rootNode = doc.getDocumentElement();
if(filename.endsWith("items.xml"))//load the enabled items
{
NodeList nList = doc.getElementsByTagName("item");
for(int i = 0; i < nList.getLength(); i++)
{
try
{
Node node = nList.item(i);
if((node.getNodeType() == Node.ELEMENT_NODE))
{
Element ele = (Element)node;
String access = (String)ele.getAttribute("access");
String level = access.substring(0,access.indexOf("."));
if(!LevelManager.isLevelEnabled(level))
{
rootNode.removeChild(node);
}
}
else
{
System.out.println("NO ELEMENT NODE");
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
doc.normalize();
StringWriter stw = new StringWriter();
Transformer serializer = TransformerFactory.newInstance().newTransformer();
serializer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,"yes");
serializer.transform(new DOMSource(doc), new StreamResult(stw));
discfeatures = stw.toString();
return discfeatures;
}
catch(Exception w)
{
}
現在,問題是--->有時節點不能刪除。例如,如果我刪除server1屬性節點 - 它被刪除。然後我再次嘗試刪除server2屬性node.it顯示server1節點should'nt.Please讓我知道如果我使用正確的方式刪除節點。
由於