वैकल्पिक डोम दृष्टिकोण
वैकल्पिक रूप से, बजाय आप JDK में XPath क्षमताओं इस्तेमाल कर सकते हैं "बी को खोजने के लिए XML दस्तावेज के जानवर बल ट्रेवर्सल करने का 13 "और फिर" के साथ मूल्य तत्व "अपनी मूल से हटाने:
import java.io.File;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.xpath.*;
import org.w3c.dom.*;
public class Demo {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
Document document = dbf.newDocumentBuilder().parse(new File("input.xml"));
XPathFactory xpf = XPathFactory.newInstance();
XPath xpath = xpf.newXPath();
XPathExpression expression = xpath.compile("//A/B[C/E/text()=13]");
Node b13Node = (Node) expression.evaluate(document, XPathConstants.NODE);
b13Node.getParentNode().removeChild(b13Node);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer();
t.transform(new DOMSource(document), new StreamResult(System.out));
}
}
एक XPath यह आसान है बनाए रखने के लिए, यदि संरचना बदल जाती है यह आपके कोड के लिए सिर्फ एक एक पंक्ति परिवर्तन है उपयोग करने का लाभ। इसके अलावा यदि आपके दस्तावेज़ की गहराई बढ़ती है तो XPath आधारित समाधान लाइनों की एक ही संख्या में रहता है।
गैर डोम दृष्टिकोण
आप एक डोम के रूप में अपने एक्सएमएल अमल में लाना करने के लिए नहीं करना चाहते हैं। आप एक नोड को हटाने के लिए एक ट्रांसफार्मर और एक स्टाइलशीट इस्तेमाल कर सकते हैं:
स्रोत
2010-09-15 13:08:17
@ user274069: XPath एक एक्सएमएल पेड़ के नोड्स का चयन करने के लिए एक होस्टेड भाषा है। यह पेड़ को बदल नहीं करता है। यदि आप एक्सएसएलटी समाधान चाहते हैं, तो कृपया पुनः प्रयास करें। –