java怎样读写和修改XML文件??

我要事例代码,讲理论的乱抄的不要来... 我要事例代码,讲理论的乱抄的不要来 展开
 我来答
百度网友eab57e55a
推荐于2017-11-25 · TA获得超过342个赞
知道小有建树答主
回答量:382
采纳率:0%
帮助的人:276万
展开全部
xml:

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

<users>

<Messages>
<sendName>sendUsers</sendName>
<receiveName>snake</receiveName>
<date>2007-12-04 12:20:00</date>
<status>0</status>
<message>this is Content</message>
</Messages>

</users>

java:

package com.lianxi.DAO;
import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class UpdateXml {
public static boolean doc2XmlFile(Document document,String filename)
{
boolean flag = true;
try
{
/** 将document中的内容写入文件中 */
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
/** 编码 */
//transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(new File(filename));
transformer.transform(source, result);
}catch(Exception ex)
{
flag = false;
ex.printStackTrace();
}
return flag;
}

public static Document load(String filename)
{
Document document = null;
try
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
document=builder.parse(new File(filename));
document.normalize();
}
catch (Exception ex){
ex.printStackTrace();
}
return document;
}
/**
* 演示修改文件的具体某个节点的值
*/
public static void xmlUpdateDemo()
{
Document document = load("c://Message.xml");
Node root=document.getDocumentElement();
/** 如果root有子元素 */
if(root.hasChildNodes())
{
/** ftpnodes */
NodeList ftpnodes = root.getChildNodes();
/** 循环取得ftp所有节点 */
for (int i=0;i<ftpnodes.getLength();i++)
{
NodeList ftplist = ftpnodes.item(i).getChildNodes();
for (int k=0;k<ftplist.getLength();k++)
{
Node subnode = ftplist.item(k);
/** 删除ftp-chn节点 */
// if (subnode.getNodeType()==Node.ELEMENT_NODE&&subnode.getNodeName()=="ftp-chn")
// {
// ftpnodes.item(i).removeChild(subnode);
// }
/** 修改ftp-host的值为 192.168.0.1 */
if (subnode.getNodeType()==Node.ELEMENT_NODE&&subnode.getNodeName()=="status")
{
subnode.getFirstChild().setNodeValue("1");
}
}

}
}

doc2XmlFile(document,"c://Message.xml");
}
public static void main(String args[])throws Exception
{
UpdateXml.xmlUpdateDemo();
}
}
小虫讨厌
2008-02-26 · TA获得超过539个赞
知道小有建树答主
回答量:293
采纳率:0%
帮助的人:384万
展开全部
用DOM吧

其他增加,修改,删除操作可以参考楼上的资料

方式相同,只是函数不同.

例子如下:

import javax.xml.parsers.*;
import org.w3c.do.*;
import java.io.*;
//导入所需的包

public class displayXML
{
public static void main(String args[])

{
try
{
//为解析的XML文档创建相应的DOM对象
DocumentBuilderFactory Fac=DocumentBuilderFactory.newInstance();
DocumentBuilder Bui=fac.new DocumentBuilder();
//载入所须的XML文档.对应自已的XML文档
Document doc=bui.parese(new File("YourXML.xml"));
//初始化
doc.normalize();
//获取结点集合
NodeList lists=doc.getElementsByTagName("node");
//使用for来遍历集合
for(int i=0;i<lists.getLength();i++)
{
Element link=(Element)lists.node(i);
//格式化输出结点所对应信息
System.out.println("姓名:");
System.out.println(link.getElementsByTagName("name").node(0).getFirstChild().getNodeValue());
//....下面获得其他结点的方式想同
}
}
catch (Exception e)
{
//异常处理
e.printStackTrace();
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
franch_ting
2008-02-27 · TA获得超过241个赞
知道小有建树答主
回答量:1213
采纳率:0%
帮助的人:633万
展开全部
去这个地址下载包含访问xml的组件,里面有个xml-apis.jar的,把这个JAR包加载到项目下,下载下来的压缩包里除了这个JAR包还有详细的API和简单的Sample自己看吧,很简单的。
http://www.apache.org/dist/xerces/j/
我机器上还放了个xmlrpc-2.0.jar是用来做程序间通信的,你有兴趣也可以研究研究。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yangkailin0123
2008-02-26
知道答主
回答量:10
采纳率:0%
帮助的人:1.7万
展开全部
用JCreater软件修改试试!!!!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f61b1c9
2008-02-26
知道答主
回答量:7
采纳率:0%
帮助的人:1.1万
展开全部
java操作xml用的最多的应该是jdom开源包了,它是document模式的(虽然它用到了SAX模式),主要的API如下:
1:SAXBuilder.build(FileInputStream("*.xml");获取xml文件,返回Document实例(读xml文件)
2:Element.getChildren();获取该节点的所有字节点,返回List
3:Element.getChild("child节点名");获取字节点实例
4:Element.getAttribute("属性名");获取该节点属性的value值(平面式节点)
5:Element.getText();获取该节点的节点文本
6:Document(new Element("根节点名"));新建xml文件文档
7:Document.getRootNote();获取根节点
8:Element.addContent(Element);添加子节点
9:Element.setAttribute("属性名","属性值");添加节点属性
10:Element.setText("文本值");添加该节点的文本值
11:xmloutPutter(Format.getPrettyFormat())
12:xmlOutPutter.output(Document,FileOutPutStream);这两句用来输出xml文件,其中Document为填好内容的xml文档对象,FileoutPutStream为文本输出流)

用以上的API基本可以完成所有读写xml文件的功能了,jdom封装的很不错,类很好理解,上手也很快。
唯一的不足是它不是严格校验的xml解析器,即你在getAttribute某个属性的时候,jdom并不会根据该xml文件的DTD去校验该属性是否
合法,也就是说你的xml文件中完全可以不带DTD=""的索引,因为jdom不会去加载它。实际上我们的项目中也没有谁会去把我们定义的xml文件格式所表示的数据结构写成DTD定义文件,虽然从理论上它应该是和xml文件一起出现的:)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式