Writing /volume1/Web/Public/dokuwiki/data/log/deprecated/2024-11-15.log failed

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
study:java:xml:create_xml [2009/04/13 05:45] bananastudy:java:xml:create_xml [2012/06/11 04:17] (現在) – [source snippet] banana
行 1: 行 1:
 ====== Geneate xml with dom ====== ====== Geneate xml with dom ======
-Dom level 3を用いたXML生成方法を紹介する。+Dom level 3を用いたXML生成方法を紹介します。\\ 
 +記事を書く時点での最新の**[[http://xerces.apache.org/#xerces2-j|Xerces2.9.1]]**と**JDK1.5**を前提としています。\\ 
 +その為、exampleを実行する為にはxercesImpl.jarとserializer.jarが必要となります。 
 + 
 +===== Example ===== 
 +例として、次の簡単なxmlを作成してみましょう 
 +<code xml> 
 +<?xml version="1.0" encoding="ISO-8859-1"?> 
 +<!DOCTYPE USERS SYSTEM "users.dtd"> 
 +<USERS> 
 +  <USER ID="PWD122" TYPE="customer">Tim@Home</USER> 
 +  <USER ID="MX787" TYPE="manager">Jack&amp;Moud</USER> 
 +  <USER ID="A4Q45" TYPE="employee">John D&apos;oé</USER> 
 +</USERS> 
 +</code>
  
 ===== source snippet ===== ===== source snippet =====
-以下にソースの一部分を示す。+以下にソースの一部分を示します。
 <code java> <code java>
-     public static void generateXmlWithDom(OutputStream out) throws Exception {+import org.apache.xerces.dom.DOMImplementationImpl; 
 +import org.w3c.dom.DOMConfiguration; 
 +import org.w3c.dom.DOMImplementation; 
 +import org.w3c.dom.Document; 
 +import org.w3c.dom.DocumentType; 
 +import org.w3c.dom.Element; 
 +import org.w3c.dom.Node; 
 +import org.w3c.dom.bootstrap.DOMImplementationRegistry; 
 +import org.w3c.dom.ls.DOMImplementationLS; 
 +import org.w3c.dom.ls.LSOutput; 
 +import org.w3c.dom.ls.LSSerializer; 
 +..............省略..................... 
 +public static void generateXmlWithDom(OutputStream out) throws Exception {
   
- DOMImplementation impl = DOMImplementationImpl.getDOMImplementation(); +        DOMImplementation impl = DOMImplementationImpl.getDOMImplementation(); 
- //set DOCTYPE ( dtd ) +        //set DOCTYPE ( dtd ) 
- DocumentType doctype = impl.createDocumentType("users", null, "users.dtd"); +        DocumentType doctype = impl.createDocumentType("users", null, "users.dtd"); 
- Document xmldoc = impl.createDocument(null, null, doctype);+        Document xmldoc = impl.createDocument(null, null, doctype);
  
- // Root element. + // Root element. 
- // Root element. + Element root = xmldoc.createElement("USERS"); 
-       Element root = xmldoc.createElement("USERS"); + String[] id = {"PWD122","MX787","A4Q45"}; 
-       String[] id = {"PWD122","MX787","A4Q45"}; + String[] type = {"customer","manager","employee"}; 
-       String[] type = {"customer","manager","employee"}; + String[] desc = {"Tim@Home","Jack&Moud","John D'o"}; 
-       String[] desc = {"Tim@Home","Jack&Moud","John D'o"}; + for (int i=0;i<id.length;i++) 
-       for (int i=0;i<id.length;i++) +
-       +         // Child i. 
- // Child i. + e = xmldoc.createElementNS(null, "USER"); 
- e = xmldoc.createElementNS(null, "USER"); + e.setAttributeNS(null, "ID", id[i]); 
- e.setAttributeNS(null, "ID", id[i]); + e.setAttributeNS(null, "TYPE", type[i]); 
- e.setAttributeNS(null, "TYPE", type[i]); + n = xmldoc.createTextNode(desc[i]); 
- n = xmldoc.createTextNode(desc[i]); + e.appendChild(n); 
- e.appendChild(n); + root.appendChild(e); 
- root.appendChild(e); + }
-       }+
  
- xmldoc.appendChild(root);+ xmldoc.appendChild(root);
  
- // Xml serialization + // Xml serialization 
- DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance(); + DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance(); 
- DOMImplementationLS ls = (DOMImplementationLS) registry.getDOMImplementation("LS");+ DOMImplementationLS ls = (DOMImplementationLS) registry.getDOMImplementation("LS");
  
- LSSerializer writer = ls.createLSSerializer(); + LSSerializer writer = ls.createLSSerializer(); 
- LSOutput output = ls.createLSOutput(); + LSOutput output = ls.createLSOutput(); 
- output.setByteStream(out); + output.setByteStream(out); 
- output.setEncoding("UTF-8"); + output.setEncoding("UTF-8"); 
- // set indent + // set indent 
- DOMConfiguration config = writer.getDomConfig(); + DOMConfiguration config = writer.getDomConfig(); 
- config.setParameter("format-pretty-print", new Boolean(true));+ config.setParameter("format-pretty-print", new Boolean(true));
  
- writer.write(xmldoc, output);+ writer.write(xmldoc, output);
   
- out.close();+ out.close();
  
  
-       }// generateXmlWithDom+}
 </code> </code>
 +**Xerces2.9.0**から**XMLserializer**がdeprecatedになっている為、**LSSerializer**(XML)または**JAXP Transformer API**(HTML, XHTML,SAX)を使うのが進められています。 \\
 +元々、Xercesプロジェクトで含まれていたserializationコードをXalanプロジェクトで取って、開発を進めたせいで、同期が取れなくなったらしいです。\\
 +Xalanのserializationコードがパフォーマンスが良く、バグの修正など長所があるため、徐々にXalanコードに移行することに決まったわけです。\\
 +このことが2004年の出来事なので、以降はXalanのserializationコードが利用される見込みです。
  
 ===== reference ===== ===== reference =====
   - [[http://www.javazoom.net/services/newsletter/xmlgeneration.html|Tutorial : Xml generation with java]]    - [[http://www.javazoom.net/services/newsletter/xmlgeneration.html|Tutorial : Xml generation with java]] 
 +  - [[http://xerces.apache.org/xerces2-j/faq-general.html#faq-6|serializtion of Xml]]
 +  - [[http://marc.info/?l=xalan-dev&m=107593381313807&w=2| Moving towards common serialization code...]]
  
  

QR Code
QR Code study:java:xml:create_xml (generated for current page)