次のような XML ドキュメントを想像してください。
<?xml version="1.0" encoding="UTF-8" ?>
<books>
<book name="book1"></book>
<book name="book2"></book>
</books>
いくつかの書籍を除外した後、ドキュメントを新しいファイルに書き込みたいと考えています。私はJOOXを使用しており、次のようなコードがあります。
final FastFilter nameFilter = new FastFilter() {
final Set<String> validNames = new HashSet<>();//contains "book1"
@Override public boolean filter(Context context) {
return !validNames.contains($(context).attr("name"));
}
};
final Document doc = $(new StringReader("entire text of xml document...")).document();
final Match m = $(doc).find("book").remove(nameFilter);
私はこのようなことを試しましm.write(new File(output.xml));
たが、それは次のようなものしか出力しません:
<book name="book1"></book>
つまり、親要素<books>
と最初の XML 宣言が欠落しています。これを達成する方法はありますか?20行のDOMコードではなく、できればJOOXを使用したシンプルでエレガントなソリューションを探しています:)