====== 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...]]