○XMLドキュメントの作成
XmlDocument doc = new XmlDocument() ; |
ElementNode component = (ElementNode) doc.createElement("Component") ;
|
doc.appendChild(component) ; |
ElementNode cpu = (ElementNode) doc.createElement("CPU") ;
component.appendChild(cpu) ;
|
Text titlec = doc.createTextNode("Intel Celeron") ;
celeron.appendChild(titlec) ;
|
<方法1>
Attrオブジェクトを作成して属性値を設定、elementに追加する
Attr attrib = doc.createAttribute ("attr1");
attrib.setNodeValue ("value1");
component.getAttributes().setNamedItem(attrib);
|
<方法2>
ElementNodeオブジェクトのsetAttributeメソッドを使う
component.setAttribute ("attr2", "value2");
|
<標準出力に表示>
doc.write(System.out) ; |
<ファイルに出力>
doc.write(new FileOutputStream(args[0])) ; |
% javac -classpath ../../xml.jar:$(JAVA_HOME)/lib/classes.zip \
XMLsample1.java
% java -classpath ../../xml.jar:$(JAVA_HOME)/lib/classes.zip \
XMLsample1 sample1.xml
<?xml version="1.0" encoding="UTF-8"?>
<Component attr1="value1" attr2="value2">
<CPU>
<Intel>
<Celeron>Intel Celeron</Celeron>
<PentiumIII>Intel PentiumIII</PentiumIII>
<Xeon>Intel PentiumIII Xeon</Xeon>
</Intel>
<AMD>
<Athlon>AMD Athlon</Athlon>
</AMD>
</CPU>
<Memory />
<HDD />
</Component>
|
import java.io.* ;
import com.sun.xml.tree.* ;
import org.w3c.dom.* ;
public class XMLsample1
{
public static void main(String args []) throws IOException, DOMException {
if (args.length != 1) {
System.err.println("Usage: cmd filename") ;
System.exit(1) ;
}
// XmlDocumentオブジェクトを構築
XmlDocument doc = new XmlDocument() ;
// ドキュメントのルートに"Component"を設定
ElementNode component = (ElementNode) doc.createElement("Component") ;
doc.appendChild(component) ;
// "Component"に"CPU"を追加
ElementNode cpu = (ElementNode) doc.createElement("CPU") ;
component.appendChild(cpu) ;
// "CPU"に"Intel"を追加
ElementNode intel = (ElementNode) doc.createElement("Intel") ;
cpu.appendChild(intel) ;
// "Intel"に"Celeron"を追加
ElementNode celeron = (ElementNode) doc.createElement("Celeron") ;
intel.appendChild(celeron) ;
// "Intel"に"PentiumIII"を追加
ElementNode pentium = (ElementNode) doc.createElement("PentiumIII") ;
intel.appendChild(pentium) ;
// "Intel"に"Xeon"を追加
ElementNode xeon = (ElementNode) doc.createElement("Xeon") ;
intel.appendChild(xeon) ;
// "CPU"に"AMD"を追加
ElementNode amd = (ElementNode) doc.createElement("AMD") ;
cpu.appendChild(amd) ;
// "AMD"に"Athlon"を追加
ElementNode athlon = (ElementNode) doc.createElement("Athlon") ;
amd.appendChild(athlon) ;
// "Component"に"Memory"を追加
ElementNode memory = (ElementNode) doc.createElement("Memory") ;
component.appendChild(memory) ;
// "Component"に"HDD"を追加
ElementNode hdd = (ElementNode) doc.createElement("HDD") ;
component.appendChild(hdd) ;
// "Celeron"にテキスト"Intel Celeron"を設定
Text titlec = doc.createTextNode("Intel Celeron") ;
celeron.appendChild(titlec) ;
// "PentiumIII"にテキスト"Intel PentiumIII"を設定
Text titlep = doc.createTextNode("Intel PentiumIII") ;
pentium.appendChild(titlep) ;
// "Xeon"にテキスト"Intel PentiumIII Xeon"を設定
Text titlex = doc.createTextNode("Intel PentiumIII Xeon") ;
xeon.appendChild(titlex) ;
// "Athlon"にテキスト"AMD Athlon"を設定
Text titlea = doc.createTextNode("AMD Athlon") ;
athlon.appendChild(titlea) ;
// "Component"に属性"attr1=value1"を設定
Attr attrib = doc.createAttribute ("attr1");
attrib.setNodeValue ("value1");
component.getAttributes().setNamedItem(attrib);
// "Component"に属性"attr2=value2"を設定
component.setAttribute ("attr2", "value2");
try {
// XMLドキュメントをファイルに出力
doc.write(new FileOutputStream(args[0])) ;
}
catch (Exception e) {
e.printStackTrace() ;
}
// XMLドキュメントを標準出力に表示
doc.write(System.out) ;
System.exit(0) ;
}
}
|
XmlDocument doc = XmlDocument.createXmlDocument(
new FileInputStream(args[0]), false) ;
|
ElementNode component = (ElementNode) doc.getDocumentElement() ;
ElementNode mb = (ElementNode) doc.createElement("MB") ;
component.appendChild(mb) ;
|
<方法1>
getChildで子elementの列を取得し、番号で指定する
ElementNode memory = (ElementNode) component.getChildNodes().item(3) ;
ElementNode sdram = (ElementNode) doc.createElement("SDRAM") ;
memory.appendChild(sdram) ;
|
<方法2>
getElementsByTagNameで名前の一致するelementの列を取得する
ElementNode athlon = (ElementNode) doc.getElementsByTagName("Athlon").item(0) ;
ElementNode amd = (ElementNode) athlon.getParentNode() ;
ElementNode k6 = (ElementNode) doc.createElement("K6") ;
|
"AMD"の子elementとして"Athlon"の前に"K6"を挿入する
amd.insertBefore(k6, athlon) ; |
% javac -classpath ../../xml.jar:$(JAVA_HOME)/lib/classes.zip \
XMLsample2.java
% java -classpath ../../xml.jar:$(JAVA_HOME)/lib/classes.zip \
XMLsample2 sample1.xml sample2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Component attr1="value1" attr2="value2">
<CPU>
<Intel>
<Celeron>Intel Celeron</Celeron>
<PentiumIII>Intel PentiumIII</PentiumIII>
<Xeon>Intel PentiumIII Xeon</Xeon>
</Intel>
<AMD>
<K6>AMD K6</K6>
<Athlon>AMD Athlon</Athlon>
</AMD>
</CPU>
<Memory>
<SDRAM />
</Memory>
<HDD />
<MB />
</Component>
|
import java.io.* ;
import com.sun.xml.tree.* ;
import org.w3c.dom.* ;
import org.xml.sax.InputSource ;
import org.xml.sax.SAXException ;
import org.xml.sax.SAXParseException ;
public class XMLsample2
{
public static void main(String args []) {
if (args.length != 2) {
System.err.println("Usage: cmd filename") ;
System.exit(1) ;
}
try {
// XMLファイルからXmlDocumentオブジェクトを作成する
XmlDocument doc = XmlDocument.createXmlDocument(
new FileInputStream(args[0]), false) ;
// テキストをタグと別の行にする
doc.getDocumentElement().normalize() ;
// ルートのelementを取得して新たなelementを追加する
ElementNode component = (ElementNode) doc.getDocumentElement() ;
ElementNode mb = (ElementNode) doc.createElement("MB") ;
component.appendChild(mb) ;
// getChildで子elementの列を取得し、番号で指定する
ElementNode memory = (ElementNode) component.getChildNodes().item(3) ;
ElementNode sdram = (ElementNode) doc.createElement("SDRAM") ;
memory.appendChild(sdram) ;
// getElementsByTagNameで名前の一致するelementの列を取得する
ElementNode athlon = (ElementNode) doc.getElementsByTagName("Athlon").item(0) ;
ElementNode amd = (ElementNode) athlon.getParentNode() ;
ElementNode k6 = (ElementNode) doc.createElement("K6") ;
// "AMD"の子elementとして"Athlon"の前に"K6"を挿入する
amd.insertBefore(k6, athlon) ;
Text titlek = doc.createTextNode("AMD K6") ;
k6.appendChild(titlek) ;
// ファイル及び標準出力に表示
doc.write(new FileOutputStream(args[1])) ;
doc.write(System.out) ;
}
catch (Exception e) {
e.printStackTrace() ;
}
System.exit(0) ;
}
}
|