既存の構成XMLファイルのいくつかのノードを変更しています<!DOCTYPE>
。行が含まれています。
Xquery式を使用してXMLファイルを変更した後、結果のXMLファイルには、 <!DOCTYPE>
行を除くすべてのデータが元のデータとして含まれます。
したがって、<!DOCTYPE>
結果のXMLファイルにも行が必要です。
私のソースXMLファイル:<!DOCTYPE>
行付き
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE hibernate-configuration SYSTEM "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="c3p0.autoCommitOnClose">false</property>
<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
結果のXMLファイル:<!DOCTYPE>
行がありませんが、必要です
<?xml version="1.0" encoding="UTF-8" standalone="no"?><hibernate-configuration>
<session-factory>
<property name="c3p0.autoCommitOnClose">false</property>
<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
読み取りと書き込みの論理コードは次のとおりです。
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
Document doc = null;
XPathExpression expr = null;
Node attributeElement = null;
try {
builder = factory.newDocumentBuilder();
// creating input stream
doc = builder.parse(file);
XPathFactory xpf = XPathFactory.newInstance();
XPath xpath = xpf.newXPath();
//expr = xpath.compile("/sitemesh/mapping/@decorator");
expr = xpath.compile("/hibernate-configuration/session-factory/property/@name='connection.url'");
attributeElement = (Node) expr.evaluate(doc, XPathConstants.NODE);
System.out.println("value:"+attributeElement.getNodeValue());
//attributeElement.setNodeValue("/WEB-INF/views/decorators/" + themeName);
} catch (Exception e) {
System.out.println("e:"+e);
}
// writing xml file
TransformerFactory transformerFactory = TransformerFactory
.newInstance();
Transformer transformer;
try {
transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(file);// creating output
// stream
transformer.transform(source, result);
} catch (Exception e) {
}
XMLファイルの一部のノードを変更した直後、結果のファイルに<!DOCTYPE>
行が含まれていません
<!doctype>
結果のxmlに行を追加する方法を教えてください。ありがとう