展会信息港展会大全

xml文件的修改接口
来源:互联网   发布日期:2016-01-13 21:57:50   浏览:2074次  

导读:我现在需要一个接口来修改xml文件中的一些系统配置,使得这些被指信息可以不用由程序员事先设定,那这样的接口要怎样写呢?我在网上找了下面这个例子。001importjava.io.FileInputStream;002importjava.io.FileN......

我现在需要一个接口来修改xml文件中的一些系统配置,使得这些被指信息可以不用由程序员事先设定,那这样的接口要怎样写呢?我在网上找了下面这个例子。

001

import java.io.FileInputStream;

002

import java.io.FileNotFoundException;

003

import java.io.FileOutputStream;

004

import java.io.IOException;

005

import java.io.InputStream;

006

import javax.xml.parsers.*;

007

import javax.xml.transform.Transformer;

008

import javax.xml.transform.TransformerException;

009

import javax.xml.transform.TransformerFactory;

010

import javax.xml.transform.dom.DOMSource;

011

import javax.xml.transform.stream.StreamResult;

012

import org.w3c.dom.*;

013

import org.xml.sax.*;

014

public class XmlModifier {

015

016

017

public XmlModifier() {

018

DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();//定义一个XML文件的解析器

019

try {

020

DocumentBuilder dombuilder = domfac.newDocumentBuilder();//定义一个API来获取XML文件

021

InputStream is = new FileInputStream("assets/XMLConfig.xml");

022

//文档

023

Document doc = dombuilder.parse(is);//解析来自InputStream的文件,创建为doc文件树

024

//根节点

025

Element root = doc.getDocumentElement();

026

//根下的子节点

027

NodeList books = root.getChildNodes();

028

if (books != null) {

029

for (int i = 0; i < books.getLength(); i++) {

030

Node book = books.item(i);

031

if (book.getNodeType() == Node.ELEMENT_NODE) {

032

String MAP = book.getAttributes().getNamedItem("MAP").getNodeValue();

033

System.out.println(MAP);

034

//子节点的子节点

035

for (Node node = book.getFirstChild(); node != null; node = node.getNextSibling()) {

036

if (node.getNodeType() == Node.ELEMENT_NODE) {

037

if (node.getNodeName() == "LOCATIONMETHOD") {

038

//String name = node.getNodeValue();

039

String LocationMethod = node.getFirstChild().getNodeValue();

040

//System.out.println(name);

041

System.out.println(LocationMethod);

042

node.setTextContent("GPRS");

043

}

044

if (node.getNodeName() == "DOUBLECLCKZOOM") {

045

String DoubleClickZoom = node.getFirstChild().getNodeValue();

046

System.out.println(DoubleClickZoom);

047

048

//修改字段

049

node.setTextContent("false");

050

}

051

if(node.getNodeName()=="UPDATEPOSIONTIME"){

052

String UpDatePositionTime = node.getFirstChild().getNodeValue();

053

System.out.println(UpDatePositionTime);

054

node.setTextContent("5");

055

}

056

}

057

}

058

}

059

}

060

061

//保存文件作用

062

writeXML(doc, "NewFile.xml");

063

064

}

065

} catch (ParserConfigurationException e) {

066

// TODO: handle exception

067

e.printStackTrace();

068

//System.out.println("解析错误");

069

} catch (FileNotFoundException e) {

070

e.printStackTrace();

071

//System.out.println("文件查找失败");

072

} catch (SAXException e) {

073

e.printStackTrace();

074

//System.out.println("接口错误");

075

} catch (IOException e) {

076

e.printStackTrace();

077

//System.out.println("输入/输出错误");

078

}

079

}

080

/**

081

* @param args

082

083

public static void main(String[] args) {

084

// TODO Auto-generated method stub

085

new XmlModifier();

086

}

087

//保存新的Document

088

private static void writeXML(Document doc, String file) {

089

try {

090

Transformer t = TransformerFactory.newInstance().newTransformer();

091

t.setOutputProperty("indent", "yes");

092

t.transform(new DOMSource(doc), new StreamResult(newFileOutputStream(file)));

093

} catch (TransformerException e) {

094

e.printStackTrace();

095

} catch (FileNotFoundException e) {

096

e.printStackTrace();

097

}

098

}

099

//创建新Document

100

private static void newDocument(DocumentBuilder db) throws SAXException, IOException {

101

Document doc = db.newDocument();

102

Element root = doc.createElement("root");

103

doc.appendChild(root);

104

root.appendChild(doc.createElement("new"));

105

writeXML(doc, "new.xml");

106

}

107

}

但是运行时Console报错:

#

# A fatal error has been detected by the Java Runtime Environment:

#

#Internal Error (classFileParser.cpp:3494), pid=4108, tid=4612

#Error: ShouldNotReachHere()

#

# JRE version: 6.0_25-b06

# Java VM: Java HotSpot(TM) Client VM (20.0-b11 mixed mode windows-x86 )

# An error report file with more information is saved as:

# D:\AndroidWork\XmlConfigReader_Writer\hs_err_pid4108.log

#

# If you would like to submit a bug report, please visit:

#http://java.sun.com/webapps/bugreport/crash.jsp

#

请大家指教。

XMLConfig.xml文件如下:

1

<?xml version="1.0" encoding="utf-8" ?>

2

3

<MAP>

4

<LOCATIONMETHOD>ID</LOCATIONMETHOD>

5

<DOUBLECLICKZOOM>true</DOUBLECLICKZOOM>

6

<UPDATEPOSITIONTIME>1</UPDATEPOSITIONTIME>

7

</MAP>

赞助本站

人工智能实验室

相关热词: xml 修改 接口

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港