DOM作成、解析XMLファイル
3749 ワード
すべての近代的なブラウザにはXMLを読み込み、操作する内部のXML解像器があります.解析器はXMLをメモリにロードし、JavaScriptを通じてアクセスできるXML DOMオブジェクトに変換します.
解析器はドキュメント全体を読み込んで、このツリー構造をDOMインターフェースを使用して、常駐メモリのツリー構造を構築します.
利点:全体のドキュメントツリーはメモリの中にあり、操作しやすいです.削除、変更、並び替えなど様々な機能をサポートします.
短所:ドキュメント全体をメモリに取り込み(不要なノードを含む)、時間と空間を無駄にします.使用する場合:ドキュメントを解析すると、これらのデータにも複数アクセスする必要があります.ハードウェア資源が十分(メモリ、CPU)
Xml文書解析器を生成し、XML構造に対応するツリー構造データをメモリに作成することで、XMLファイル中のデータを簡単に入手することができます.newDocument()を呼び出すとDcumentノードが得られます.
解析Xmlドキュメント
解析器はドキュメント全体を読み込んで、このツリー構造をDOMインターフェースを使用して、常駐メモリのツリー構造を構築します.
利点:全体のドキュメントツリーはメモリの中にあり、操作しやすいです.削除、変更、並び替えなど様々な機能をサポートします.
短所:ドキュメント全体をメモリに取り込み(不要なノードを含む)、時間と空間を無駄にします.使用する場合:ドキュメントを解析すると、これらのデータにも複数アクセスする必要があります.ハードウェア資源が十分(メモリ、CPU)
Xml文書解析器を生成し、XML構造に対応するツリー構造データをメモリに作成することで、XMLファイル中のデータを簡単に入手することができます.newDocument()を呼び出すとDcumentノードが得られます.
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document= builder.newDocument();
Dcument内容を構築するElement root = this.document.createElement("employees");
this.document.appendChild(root);
Element employe = this.document.createElement("employe");
Element name = this.document.createElement("name");
name.appendChild(this.document.createTextNode("yues"));
Element age = this.document.createElement("age");
age.appendChild(this.document.createTextNode("26"));
Element sex = this.document.createElement("sex");
sex.appendChild(this.document.createTextNode("Man"));
employe.appendChild(name);
employe.appendChild(age);
employe.appendChild(sex);
root.appendChild(employe);
Transformerオブジェクトを使ってDockmentノードを一つのXMLファイルに変換します.TransformerFactory transFactory=TransformerFactory. newInstance()
Transformer transformer=transFactory. newTransformer();
変換されたDockmentオブジェクトを一つのDOMSourceオブジェクトにパッケージ化します.DOMSource domSource=new DOMSource(document);
変換されたXMLファイルのオブジェクトを一つのStreamResultオブジェクトにパッケージ化します.File file=new File("newXML.xml");
FileOutputStream out=new FileOutputStream(file);
StreamResult xmlResult=new StreamResult(out);
対象transformerがtranformを呼び出して方法を変えます.transformer.transform(domSource, xmlResult);
Dcumentを変更するための一般的な方法Nodeインターフェースは、Dcumentの親インターフェースであり、ノードを修正、追加、削除するための多くの方法を提供している.Node appedノードは、この方法を呼び出して、現在のノードに新たなサブノードを追加し、この新しいノードに戻すことができる.Node removeChild(Node oldChild)throws DOMExceptionノードは、この方法で指定されたサブノードを削除し、削除されたサブノードに戻るように呼びかけている.Node replacceChildは、サブノードリストの中のサブノードoldChildをnewChildに置換し、oldChildノードに戻る.解析Xmlドキュメント
public void paserXml(String fileName) {
// TODO Auto-generated method stub
try {
this.document = builder.parse(new FileInputStream(new File(fileName)));
NodeList employees = document.getChildNodes();
for(int i=0;i<employees.getLength();i++){
Node employe = employees.item(i);
System.out.println(" "+(i+1)+" Employee");
NodeList employeAttrs = employe.getChildNodes();
for(int j=0;j<employeAttrs.getLength();j++){
Node employeAttr = employeAttrs.item(j);
NodeList attrInfo = employeAttr.getChildNodes();
for(int k=0;k<attrInfo.getLength();k++){
Node info = attrInfo.item(k);
if(info.getNodeType()==Node.ELEMENT_NODE){
System.out.println(info.getNodeName()+":"+info.getTextContent());
}
}
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}