====== Geneate xml with dom ====== Dom level 3を用いたXML生成方法を紹介します。\\ 記事を書く時点での最新の**[[http://xerces.apache.org/#xerces2-j|Xerces2.9.1]]**と**JDK1.5**を前提としています。\\ その為、exampleを実行する為にはxercesImpl.jarとserializer.jarが必要となります。 ===== Example ===== 例として、次の簡単なxmlを作成してみましょう。 Tim@Home Jack&Moud John D'oé ===== source snippet ===== 以下にソースの一部分を示します。 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(); //set DOCTYPE ( dtd ) DocumentType doctype = impl.createDocumentType("users", null, "users.dtd"); Document xmldoc = impl.createDocument(null, null, doctype); // Root element. Element root = xmldoc.createElement("USERS"); String[] id = {"PWD122","MX787","A4Q45"}; String[] type = {"customer","manager","employee"}; String[] desc = {"Tim@Home","Jack&Moud","John D'o"}; for (int i=0;i **Xerces2.9.0**から**XMLserializer**がdeprecatedになっている為、**LSSerializer**(XML)または**JAXP Transformer API**(HTML, XHTML,SAX)を使うのが進められています。 \\ 元々、Xercesプロジェクトで含まれていたserializationコードをXalanプロジェクトで取って、開発を進めたせいで、同期が取れなくなったらしいです。\\ Xalanのserializationコードがパフォーマンスが良く、バグの修正など長所があるため、徐々にXalanコードに移行することに決まったわけです。\\ このことが2004年の出来事なので、以降はXalanのserializationコードが利用される見込みです。 ===== reference ===== - [[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...]]