前提・実現したいこと
javaアプリの開発で、dom4jのライブラリを使用し、xmlの出力を行っています。
xml宣言後に、処理命令の要素を追加し、その後に通常の要素を書き出したいです。
発生している問題
処理命令の要素後に空白行が挿入されるのをなくしたい。
該当のソースコード
java
1 2 3 FileOutputStream fos = null; 4 OutputFormat format = new OutputFormat(" ", true, "UTF-8"); 5 6 XMLWriter writer = null; 7 try { 8 Document newDoc = DocumentHelper.createDocument(); 9 10 Map<String, String> map = new LinkedHashMap<>(); 11 // 処理命令の属性をマップに追加 12 map.put("type", "text/xsl"); 13 map.put("href", "../../test/sample.xsl"); 14 15 // 処理命令を生成しdomへ追加 16 ProcessingInstruction pi = DocumentHelper.createProcessingInstruction("xml-stylesheet", map); 17 List<Node> headerList = newDoc.content(); 18 headerList.add(0, pi); 19 20 // 通常要素をdomへ追加 21 Element person= newDoc.addElement("person"); 22 person.addElement("name"); 23 24 // xmlの書き出し 25 fos = new FileOutputStream("C:\demo\demo.xml"); 26 writer = new XMLWriter(fos, format); 27 writer.write(newDoc); 28 29 } catch (FileNotFoundException e) { 30 e.printStackTrace(); 31 } catch (UnsupportedEncodingException e) { 32 e.printStackTrace(); 33 } catch (IOException e) { 34 e.printStackTrace(); 35 } finally { 36 try { 37 writer.close(); 38 } catch (IOException e) { 39 e.printStackTrace(); 40 } 41 } 42 43
書き出されたdemo.xml
xml
1 2<?xml version="1.0" encoding="UTF-8"?> 3<?xml-stylesheet type="text/xsl" href="../../test/sample.xsl"?> 4 //????この空白行を削除したい 5<person> 6 <name/> 7</person> 8
試したこと
xml宣言後の空白行を削除するOutputFormatのsetNewLineAfterDeclarationをfalseにしても下記になるだけでした。
xml
1 2<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="../../test/sample.xsl"?> 3 //????この空白行を削除したい 4<person> 5 <name/> 6</person> 7
また、OutputFormatのsetNewLineAfterDeclarationをfalseで、命令処理を追加しなければ空白行は存在しませんでした。
xml
1 2<?xml version="1.0" encoding="UTF-8"?> 3<person> 4 <name/> 5</person> 6
処理命令後の空白行は消すことはできないのでしょうか?
ご教授の程、宜しくお願い致します。。。
補足情報(FW/ツールのバージョンなど)
dom4j version: 2.1.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/19 02:46
2019/03/19 04:51
2019/03/19 23:54