I am using DOM
parser and XPATH
to parse a my XML
file. I have changed a value of a node in the Document Object
. However when I open my XML
file, it doesn't show me any reflection. My DOM
parser code is as below :
private void setPortNumber(int portNumber) {
try {
Document parsedDocument = parseDocument(tempPath + "/apache-6/conf/server.xml");
XPath xPath = XPathFactory.newInstance().newXPath();
XPathExpression expr;
expr = (XPathExpression) xPath.compile("//Connector");
Object result = expr.evaluate(parsedDocument, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int i = 0; i < nodes.getLength(); i++) {
Node node =nodes.item(i);
NamedNodeMap attributes = node.getAttributes();
for(int j=0; j< attributes.getLength(); j++){
String value = attributes.item(j).getNodeValue();
if(value.equals("HTTP/1.1")){
Node valueNode = attributes.item(0);
valueNode.setNodeValue(portNumber+"");
}
}
}
} catch (XPathExpressionException e) {}
}
private Document parseDocument(String xmPath) {
Document doc = null;
try {
DocumentBuilderFactory domFactory =
DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
builder = domFactory.newDocumentBuilder();
doc = builder.parse(xmPath);
}catch (Exception e) {}
return doc;
}
How can I save my document after done with changes?
Can anyone help me to resolve this?
You have to transform the dom object into an XML using the transformer.
http://download.oracle.com/javaee/1.4/tutorial/doc/JAXPXSLT4.html
Here is the sample code for updating an XML file
You could use the Transformer API to write your DOM to a stream or a file.