fork(1) download
  1. import java.io.*;
  2. import org.w3c.dom.*;
  3. import org.xml.sax.*;
  4. import javax.xml.parsers.*;
  5. import javax.xml.transform.*;
  6. import javax.xml.transform.dom.*;
  7. import javax.xml.transform.stream.*;
  8.  
  9. class Main
  10. {
  11. public static void main (String[] args) throws java.lang.Exception
  12. {
  13. /* ちょっと前座長い */
  14.  
  15. /* 最初xml宣言の前に改行が入るコード書いちゃって焦った。直したけど。*/
  16. String xmltext1 = br.readLine();
  17. while(true){
  18. String s = br.readLine();
  19. if(s.equals("")){
  20. break;
  21. }
  22. xmltext1 = xmltext1 + "\n" + s;
  23. }
  24.  
  25. String xmltext2 = br.readLine();
  26. while(true){
  27. String s = br.readLine();
  28. if(s == null){
  29. break;
  30. }
  31. xmltext2 = xmltext2 + "\n" + s;
  32.  
  33. }
  34.  
  35.  
  36. /* ここから本番 */
  37. DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
  38.  
  39. Document xmldom1 = db.parse(new InputSource(new StringReader(xmltext1)));
  40. Document xmldom2 = db.parse(new InputSource(new StringReader(xmltext2)));
  41.  
  42. // このメソッド大事。adoptNodeメソッドとも比較してみよう!
  43. Node node = xmldom1.importNode(xmldom2.getDocumentElement(),true);
  44.  
  45. xmldom1.getDocumentElement().appendChild(node);
  46.  
  47. // 後は出力して結果をみるコードをコピペ(笑)
  48. // http://w...content-available-to-author-only...e.com/discussions/thread.tss?thread_id=26060
  49.  
  50. // 2011-12-13T22:34+09:00修正
  51. //StringWriterは要らなかったので削除
  52.  
  53. DOMSource domSource = new DOMSource(xmldom1);
  54. StreamResult result = new StreamResult(System.out);
  55. TransformerFactory tf = TransformerFactory.newInstance();
  56. Transformer transformer = tf.newTransformer();
  57. transformer.transform(domSource, result);
  58.  
  59. //standaloneはどっかの設定で消せるはず。
  60. //終了タグ前の改行が<del>消せる</del>足せるかはわからん。
  61.  
  62. //2011-12-14T01:39+09:00追記
  63. //どっかに書いてあったような気がするけど調べてないこと:
  64. //1.二つの文書に重複するxml:idがあった場合はどうなるか?
  65. //2.DOM自体は問題ないんだろうと思うけど、同じ名前空間接頭辞が別々の名前空間を指していた場合は?
  66. }
  67. }
Success #stdin #stdout 0.12s 213888KB
stdin
<?xml version="1.0" encoding="UTF-8"?>
<A>
</A>

<?xml version="1.0" encoding="UTF-8"?>
<a>
<b>0</b>
<c>1</c>
<d>2</d>
</a>
stdout
<?xml version="1.0" encoding="UTF-8" standalone="no"?><A>
<a>
<b>0</b>
<c>1</c>
<d>2</d>
</a></A>