Saya mencoba menambahkan beberapa potongan kode XML dari satu file ke file lainnya. Masalahnya adalah, beberapa potongan ini memiliki tag root yang tidak perlu disalin ke file XML tujuan (hal ini berlaku jika tag root sama dengan tag induk yang telah ditentukan sebelumnya). Berikut kode yang saya gunakan saat ini untuk menyisipkan cuplikan (ditulis dalam Groovy):
if (addCode.nodeName == parentTags) { //meaning the root tags shouldn't be included
for (org.w3c.dom.Node n : addCode.childNodes) {
//parent is a NodeList
parent.item(parent.length - 1).appendChild(document.importNode(n, true))
}
} else {
parent.item(parent.length - 1).appendChild(document.importNode(addCode, true))
}
Dan untuk mengurai XML:
Document parseWithoutDTD(Reader r, boolean validating = false, boolean namespaceAware = true) {
FactorySupport.createDocumentBuilderFactory().with { f ->
f.namespaceAware = namespaceAware
f.validating = validating
f.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
f.newDocumentBuilder().with { db ->
db.parse(new InputSource(r))
}
}
}
Berikut ini contoh file XML yang tidak boleh menyertakan tag root:
<catalogue> <!-- shouldn't be included -->
<message key='type_issuedate'>Date Issued</message>
<message key='type_accessioneddate'>Date Accesioned</message>
</catalogue>
Anda mungkin telah memperhatikan masalahnya: jika saya mengabaikan tag root dari file XML untuk disalin ke file XML lainnya, tag tersebut akan memunculkan pengecualian penguraian.
EDIT: berikut adalah contoh (yang disingkat) file yang akan disisipkan:
<catalogue xml:lang="en" xmlns:i18n="http://apache.org/cocoon/i18n/2.1">
...
<message key="column4">Date</message>
<message key="column5">Summary</message>
<message key="column6">Actions</message>
<message key="restore">Restore</message>
<message key="update">Update</message>
<!-- INSERT XML HERE -->
...
</catalogue>
Dan contoh XML dengan tag root untuk disertakan (dan file terkait untuk disisipkan):
XML untuk disisipkan
<dependency>
<groupId>grID</groupId>
<artifactId>artID</artifactId>
<version>${version.number}</version>
</dependency>
File XML untuk dimasukkan
<?xml version="1.0" encoding="UTF-8"?>
<project>
<dependencies>
<dependency>
<groupId>grID1</groupId>
<artifactId>artID1</artifactId>
<type>jar</type>
<classifier>classes</classifier>
</dependency>
<!-- INSERT XML HERE -->
</dependencies>
</project>
Saat ini, semua kode ini tidak berfungsi sesuai keinginan saya. Bisakah seseorang membantu saya?
Sangat dihargai!