栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java如何读写xml文件?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java如何读写xml文件?

这是一个快速的DOM示例,显示了如何使用dtd读写简单的xml文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE roles SYSTEM "roles.dtd"><roles>    <role1>User</role1>    <role2>Author</role2>    <role3>Admin</role3>    <role4/></roles>

和dtd:

<?xml version="1.0" encoding="UTF-8"?><!ELEMENT roles (role1,role2,role3,role4)><!ELEMENT role1 (#PCDATA)><!ELEMENT role2 (#PCDATA)><!ELEMENT role3 (#PCDATA)><!ELEMENT role4 (#PCDATA)>

首先导入这些:

import javax.xml.parsers.*;import javax.xml.transform.*;import javax.xml.transform.dom.*;import javax.xml.transform.stream.*;import org.xml.sax.*;import org.w3c.dom.*;

这是你需要的一些变量:

private String role1 = null;private String role2 = null;private String role3 = null;private String role4 = null;private ArrayList<String> rolev;

这是一个阅读器(字符串xml是你的xml文件的名称):

public boolean readXML(String xml) {        rolev = new ArrayList<String>();        document dom;        // Make an  instance of the documentBuilderFactory        documentBuilderFactory dbf = documentBuilderFactory.newInstance();        try { // use the factory to take an instance of the document builder documentBuilder db = dbf.newdocumentBuilder(); // parse using the builder to get the DOM mapping of the     // XML file dom = db.parse(xml); Element doc = dom.getdocumentElement(); role1 = getTextValue(role1, doc, "role1"); if (role1 != null) {     if (!role1.isEmpty())         rolev.add(role1); } role2 = getTextValue(role2, doc, "role2"); if (role2 != null) {     if (!role2.isEmpty())         rolev.add(role2); } role3 = getTextValue(role3, doc, "role3"); if (role3 != null) {     if (!role3.isEmpty())         rolev.add(role3); } role4 = getTextValue(role4, doc, "role4"); if ( role4 != null) {     if (!role4.isEmpty())         rolev.add(role4); } return true;        } catch (ParserConfigurationException pce) { System.out.println(pce.getMessage());        } catch (SAXException se) { System.out.println(se.getMessage());        } catch (IOException ioe) { System.err.println(ioe.getMessage());        }        return false;    }And here a writer:
public void saveToXML(String xml) {    document dom;    Element e = null;    // instance of a documentBuilderFactory    documentBuilderFactory dbf = documentBuilderFactory.newInstance();    try {        // use factory to get an instance of document builder        documentBuilder db = dbf.newdocumentBuilder();        // create instance of DOM        dom = db.newdocument();        // create the root element        Element rootEle = dom.createElement("roles");        // create data elements and place them under root        e = dom.createElement("role1");        e.appendChild(dom.createTextNode(role1));        rootEle.appendChild(e);        e = dom.createElement("role2");        e.appendChild(dom.createTextNode(role2));        rootEle.appendChild(e);        e = dom.createElement("role3");        e.appendChild(dom.createTextNode(role3));        rootEle.appendChild(e);        e = dom.createElement("role4");        e.appendChild(dom.createTextNode(role4));        rootEle.appendChild(e);        dom.appendChild(rootEle);        try { Transformer tr = TransformerFactory.newInstance().newTransformer(); tr.setOutputProperty(OutputKeys.INDENT, "yes"); tr.setOutputProperty(OutputKeys.METHOD, "xml"); tr.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); tr.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "roles.dtd"); tr.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); // send DOM to file tr.transform(new DOMSource(dom), new StreamResult(new FileOutputStream(xml)));        } catch (TransformerException te) { System.out.println(te.getMessage());        } catch (IOException ioe) { System.out.println(ioe.getMessage());        }    } catch (ParserConfigurationException pce) {        System.out.println("UsersXML: Error trying to instantiate documentBuilder " + pce);    }}

getTextValue在这里:

private String getTextValue(String def, Element doc, String tag) {    String value = def;    NodeList nl;    nl = doc.getElementsByTagName(tag);    if (nl.getLength() > 0 && nl.item(0).hasChildNodes()) {        value = nl.item(0).getFirstChild().getNodevalue();    }    return value;}

添加一些访问器和更改器,你就完成了!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/456433.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号