有人要java dom解析的XML通讯录 洒家给写了个
用swing做的 解析XML那部分代码:
package com.test.parseXML;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.awt.List;
import java.io.*;
import java.util.ArrayList;
import java.util.Vector;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
import org.xml.sax.SAXException;
public class ParseXML {
private Document getDocument(String filename)
{
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
factory.setIgnoringElementContentWhitespace(true);
try {
DocumentBuilder domParser=factory.newDocumentBuilder();
try {
Document document=domParser.parse(new File(filename));
return document;
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
return null;
}
public ArrayList<ArrayList> getNodeInfo(String filename)
{
ArrayList<ArrayList> myli=new ArrayList<ArrayList>();
Document document=getDocument(filename);
NodeList nodelist=document.getElementsByTagName("anpai");
for(int i=0;i<nodelist.getLength();i++)
{
String date=document.getElementsByTagName("date").item(i).getTextContent();
String time=document.getElementsByTagName("time").item(i).getTextContent();
String activity=document.getElementsByTagName("activity").item(i).getTextContent();
ArrayList<String> li=new ArrayList<String>();
li.add(date);
li.add(time);
li.add(activity);
myli.add(li);
}
return myli;
}
public ArrayList<ArrayList> getQueryNodeInfo(String filename,String query_date)
{
ArrayList<ArrayList> myli=new ArrayList<ArrayList>();
Document document=getDocument(filename);
NodeList nodelist=document.getElementsByTagName("anpai");
for(int i=0;i<nodelist.getLength();i++)
{
String date=document.getElementsByTagName("date").item(i).getTextContent();
if(date.equals(query_date))
{
String time=document.getElementsByTagName("time").item(i).getTextContent();
String activity=document.getElementsByTagName("activity").item(i).getTextContent();
ArrayList<String> li=new ArrayList<String>();
li.add(date);
li.add(time);
li.add(activity);
myli.add(li);
}
}
return myli;
}
public void deleteNode(String filename,int rowCount)
{
Document document=getDocument(filename);
NodeList nodelist=document.getElementsByTagName("anpai");
Node anpai_node=nodelist.item(rowCount);//anpai节点
anpai_node.getParentNode().removeChild(anpai_node);
updateXML(filename,document);
}
public void addNode(String filename,String date_str,String time_str,String activity_str)
{
Document document=getDocument(filename);
Node node=document.createElement("anpai");
Node node_child1=document.createElement("date");
Node node_child2=document.createElement("time");
Node node_child3=document.createElement("activity");
Text textnode_date=document.createTextNode(date_str);
Text textnode_time=document.createTextNode(time_str);
Text textnode_activity=document.createTextNode(activity_str);
node_child1.appendChild(textnode_date);
node_child2.appendChild(textnode_time);
node_child3.appendChild(textnode_activity);
node.appendChild(node_child1);
node.appendChild(node_child2);
node.appendChild(node_child3);
document.getDocumentElement().appendChild(node);
updateXML("src/schedule.xml",document);
}
public String[] getNodeInfoByRow(String filename,int rowcount)
{
Document document=getDocument(filename);
String date=document.getElementsByTagName("date").item(rowcount).getTextContent();
String time=document.getElementsByTagName("time").item(rowcount).getTextContent();
String activity=document.getElementsByTagName("activity").item(rowcount).getTextContent();
String []arr={date,time,activity};
return arr;
}
public void editNode(String filename,int whichnode,String e_date,String e_time,String e_activity)
{
Document document=getDocument(filename);
//System.out.println(document.getElementsByTagName("date").item(whichnode).getChildNodes().item(0).getNodeValue());
document.getElementsByTagName("date").item(whichnode).getChildNodes().item(0).setNodeValue(e_date);
document.getElementsByTagName("time").item(whichnode).getChildNodes().item(0).setNodeValue(e_time);
document.getElementsByTagName("activity").item(whichnode).getChildNodes().item(0).setNodeValue(e_activity);
updateXML(filename,document);
}
public void updateXML(String filename,Document document)
{
TransformerFactory tfactory=TransformerFactory.newInstance();
try {
Transformer transformer=tfactory.newTransformer();
DOMSource domsource=new DOMSource(document);
StreamResult result = new StreamResult(new File(filename));
try {
transformer.transform(domsource,result);
} catch (TransformerException e) {
e.printStackTrace();
}
} catch (TransformerConfigurationException e) {
e.printStackTrace();
}
}
}
继承AbstractTableModel:
package com.test.model;
import java.util.ArrayList;
import java.util.Vector;
import javax.swing.table.AbstractTableModel;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.test.parseXML.ParseXML;
public class ScheModel extends AbstractTableModel{
private Vector columnNames;
private Vector rowData;
public ScheModel()
{
init("");
}
public ScheModel(String date)
{
init(date);
}
public void init(String date)
{
rowData=new Vector();
columnNames=new Vector();
columnNames.add("日期");
columnNames.add("时间");
columnNames.add("事件");
if(date=="")
{
ParseXML parse=new ParseXML();
ArrayList<ArrayList> al=parse.getNodeInfo("src/schedule.xml");
for(int i=0;i<al.size();i++)
{
ArrayList<String> a=al.get(i);
Vector hang=new Vector();
for(int j=0;j<a.size();j++)
{
hang.add(a.get(j));
}
rowData.add(hang);
}
}
else
{
ParseXML parse=new ParseXML();
ArrayList<ArrayList> al=parse.getQueryNodeInfo("src/schedule.xml",date);
for(int i=0;i<al.size();i++)
{
ArrayList<String> a=al.get(i);
Vector hang=new Vector();
for(int j=0;j<a.size();j++)
{
hang.add(a.get(j));
}
rowData.add(hang);
}
}
}
@Override
public int getColumnCount() {
return columnNames.size();
}
@Override
public int getRowCount() {
return rowData.size();
}
@Override
public Object getValueAt(int arg0, int arg1) {
return ((Vector) rowData.get(arg0)).get(arg1);
}
@Override
public String getColumnName(int arg0) {
return (String) columnNames.get(arg0);
}
}
OK 剩下的代码就不上了
分享到:
相关推荐
Java DOM 解析 XML 实例是 Java 语言中常用的 XML 解析方法之一,使用 W3C 推荐的文档对象模型(Document Object Model,DOM)来解析 XML 文档。DOM 提供了一个树形结构的对象模型,通过遍历树形结构可以访问和操作 ...
标题“java_dom解析xml xml java”表明了本文档的主题是关于如何使用Java中的DOM技术来解析XML文件。 #### 描述分析 描述中提到这是一个适合新手入门的内容,并给出了一个简单的XML示例。该XML文档包含了一个`...
JAVA DOM 解析 XML 文件过程详解 JAVA DOM 解析 XML 文件过程详解是指使用 JAVA 语言通过 DOM(Document Object Model)解析 XML 文件的过程。DOM 是一种应用程序接口(API),它将 XML 文档转换为一个树形结构,...
在这个"java DOM解析xml操作大全,增删改查"的主题中,我们将深入探讨如何使用DOM解析XML,以及如何结合三层架构(表示层、业务逻辑层、数据访问层)来实现这些操作。 首先,DOM解析的核心是`javax.xml.parsers....
在Java中,使用DOM解析XML的基本步骤包括: 1. 加载XML文档:使用`javax.xml.parsers.DocumentBuilderFactory`类创建一个实例,并调用其`newDocumentBuilder()`方法生成`DocumentBuilder`对象。 2. 解析XML:使用`...
标题中的"DOM_XML.rar"可能是一个包含DOM解析XML相关示例的压缩文件,"DOM_dom xml_dom xml java_dom解析xml_java解析xml"这部分描述了文件的主要内容,即关于DOM(Document Object Model)在XML解析中的应用,特别...
以下是一个使用Java DOM解析XML的步骤: 1. 引入必要的库: 需要引入`javax.xml.parsers`包,包含DOM解析器的主要类。 2. 创建解析器工厂: 使用`DocumentBuilderFactory`创建一个解析器工厂实例,然后通过`...
总的来说,理解并熟练掌握DOM解析XML是Java开发中的基础技能,无论是在简单的数据读取还是复杂的XML操作中,它都能提供强大的支持。同时,根据项目需求和性能考虑,可以选择JDOM等其他XML处理库作为替代方案。
在 Java 中,DOM 解析允许开发者将整个 XML 文件加载到内存中,形成一个树形结构,然后通过这个结构来访问和操作 XML 的各个部分。 首先,我们需要引入 Java 的核心解析库,即 javax.xml.parsers 命名空间。这个库...
标签"解析XML和生成XML的必备选择"表明,DOM不仅适用于生成XML,也常用于解析XML文档。解析XML时,`DocumentBuilder`会构建一个DOM树,然后可以通过DOM API查询和修改树中的节点。 总结一下,Java DOM提供了一套...
总结来说,Android中使用DOM解析XML是一种常见且直观的方式,适合处理小规模的数据。结合ButterKnife库,可以方便地将解析结果与UI组件进行绑定,提高代码的可读性和维护性。但请注意,对于大文件,考虑使用SAX或者...
总结,DOM解析XML是Java编程中一项重要的技能,尤其在处理结构化数据时。本教程的“DOM解析XML应用实例(入门经典案例)”是一个理想的起点,涵盖了DOM解析的核心概念和操作,适合初学者通过实际操作来学习和掌握。...
本篇文章将深入探讨DOM解析XML文件在Android中的应用实例。 首先,DOM解析的基本思想是将整个XML文件加载到内存中,形成一个树形结构,即DOM树。这样做的优点是解析后的数据可以方便地进行任意位置的查找和修改,但...
java dom4 解析xml
### Java中使用DOM解析XML详解 #### 一、引言 在Java开发中,解析XML是一种常见的需求。XML(Extensible Markup Language,可扩展标记语言)作为一种数据存储和传输的标准格式,在不同系统间的数据交换中扮演着...
总结来说,"DOM解析XML文件并实现通讯录"项目涵盖了Java DOM解析技术,XML文件的读写,以及可能结合了Java Swing进行图形用户界面的开发。这些知识是Java开发中处理XML数据和构建用户友好界面的基础技能。
2. **基本用法**:在Java程序中,首先需要导入dom4j库,然后使用`DocumentBuilderFactory`创建`DocumentBuilder`,接着使用`DocumentBuilder`解析XML文件,得到`Document`对象。你可以通过`Document`对象获取XML的根...
总结起来,Java中的DOM解析XML是一种强大的技术,允许程序员以对象形式处理XML文档,通过构建的树形结构可以方便地进行读写操作。然而,对于大规模的XML文件,应考虑其他低内存占用的解析策略。在实际项目中,开发者...
本篇文章将深入探讨Android中的DOM解析XML文件,包括其基本原理、实现步骤和一些实用技巧。 ### 1. DOM解析的基本概念 DOM解析是一种将XML文件转换为内存中对象模型的方法。它将XML文档视为一棵树,其中每个元素、...