<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- edited with XML Spy v4.4 U (http://www.xmlspy.com) by a (a) -->
<contacts>
<contact 编号="200720" 性别="男">
<姓名>张隆</姓名>
<QQ>356213186</QQ>
</contact>
<contact 编号="200719" 性别="男">
<姓名>于德洋</姓名>
<QQ>865212175</QQ>
</contact>
<contact 编号="200704" 性别="女">
<姓名>韩晓洁</姓名>
<QQ>526478190</QQ>
</contact>
<contact 编号="200703" 性别="女">
<姓名>龚晚晚</姓名>
<QQ>92144633</QQ>
</contact>
</contacts>==================================以上是XML代码==================================
try
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//打开确认选项,关掉名称空间敏感性选项。
factory.setValidating(false);
factory.setNamespaceAware(false);
DocumentBuilder builder = factory.newDocumentBuilder();
doc = builder.parse(new File(filename));
NodeList contacts=null;
contacts=doc.getElementsByTagName("contact");
for (int i = 0; i < contacts.getLength(); i++)
{
********这里应该怎么写呀********
}
}
把所有性别为男的整个结点删除就行了
解决方案 »
- 子类变量覆盖父类变量,子类调用父类方法的问题
- Math.random()问题
- 着急,遇到瓶颈问题,需求各位大侠帮助;请问可以在Application中调用Applet的画图方法吗?
- 初学java,用<<core java I>> OR <<java How to program>>
- applet运行不了,不知道为什么,高手看看。
- 请问哪里可以下载包含sun.misc.BASE64Encoder这个类的包
- 进销存管理软件能否用java来开发?我手头有个活!
- ???
- 在java 中怎么调用数据库,当前急待想知道调用sql server的数据库?
- 一条出错信息的意思???
- 谁能介绍一下JVM的运行机制,语言简洁概要,不抽象。
- java 去掉字符串中间的空格 trim()不行
楼主【raingi520】截止到2008-06-29 22:58:16的历史汇总数据(不包括此帖):
发帖数:13 发帖分:350
结贴数:9 结贴分:260
未结数:4 未结分:90
结贴率:69.23 % 结分率:74.29 %
楼主加油
保存文件那部分代码我已经有的,只是这部分不知道怎么写
整个文件是这样import java.io.*;
import javax.xml.parsers.*;import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.*;
import org.w3c.dom.*;public class dom9A_3{
Document doc=null;
public static void main(String[] args) {
dom9A_3 d1 = new dom9A_3();
d1.parse("contact.xml");
d1.saveDoc("myContact.xml");
}
private void parse(String filename)
{
try
{
// 获得 Document Builder Factory
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//打开确认选项,关掉名称空间敏感性选项。
factory.setValidating(false);
factory.setNamespaceAware(false);
DocumentBuilder builder = factory.newDocumentBuilder();
doc = builder.parse(new File(filename));
//doc.normalizeDocument() ;
//对dom进行处理,使得dom 中只包含需要的数据
// 取得所有的score元素,如果course属性为xml的话,将分数相加
NodeList genList=doc.getElementsByTagName("contact");//先得到contact的节点,赋值给一个列表
for(int i=0;i<genList.getLength();i++)//循环节点的数目,以genList的长度
{
Node firstContactNode=genList.item(i);//把第一个contact赋值到node
Element firstNameElement=(Element)firstContactNode;//转换会元素
if(firstNameElement.getAttribute("性别").equals("女"))//判断里面的属性是不是女的
{
//得到姓名的节点.注意的是从firstNameElement取值的.
NodeList firstvalueList= firstNameElement.getElementsByTagName("姓名");
//把得到的列表转回元素并得到下表0的列表
Element nameElement=(Element)firstvalueList.item(0);
//转回nodelist
NodeList textFNlist=nameElement.getChildNodes();
//输出
System.out.println (((Node)textFNlist.item(0)).getNodeValue().trim());
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
//本方法是将内存中的dom保存到磁盘文件
private void saveDoc(String filename)
{
//把doc代表的XML dom树输出到指定的文件
try
{
//首先创建一个DOMSource对象
DOMSource domSrc= new DOMSource (doc);
File outfile = new File (filename);
//创建一个StreamResult对象
StreamResult stream = new StreamResult (outfile);
//调用JAXP中的XSLT引擎来实现输出DOM树到XML文件中的功能。
//输入为DOMSource对象,输出为StreamResut对象。
//首先创建一个TransformerFactory对象,再由此创建Transformer对象,使用它来输出XML文档。
TransformerFactory tranfac=TransformerFactory.newInstance();
Transformer trans=tranfac.newTransformer ();
//调用Transformer对象 的transform()方法输出xml,
trans.transform(domSrc,stream);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}怎么改
{
x=conntacts[i];
x.parentNode.removeChild(x);
}
{
x=conntacts[i];
x.parentNode.removeChild(x);
}
移除的方法是for (int i = 0; i < contacts.getLength(); i++)
{
Node node = contacts.item(i);
NamedNodeMap nAttr=node.getAttributes();
if(nAttr.getNamedItem("性别").getNodeValue().equals("男"))
{
node.getParentNode().removeChild(node);//移除这个结点
}
}
package com.awu.xml;import java.io.File;
import java.io.IOException;
import java.util.Properties;import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
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 org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;/**
* 删除xml中的某个结点
* @author Administrator
*<?xml version="1.0" encoding="GBK2312" standalone="yes"?>
<!-- edited with XML Spy v4.4 U (http://www.xmlspy.com) by a (a) -->
<contacts>
<contact 编号="200720" 性别="男">
<姓名>张隆</姓名>
<QQ>356213186</QQ>
</contact>
<contact 编号="200719" 性别="男">
<姓名>于德洋</姓名>
<QQ>865212175</QQ>
</contact>
<contact 编号="200704" 性别="女">
<姓名>韩晓洁</姓名>
<QQ>526478190</QQ>
</contact>
<contact 编号="200703" 性别="女">
<姓名>龚晚晚</姓名>
<QQ>92144633</QQ>
</contact>
</contacts>
*/
public class XMLTest {
public static void main(String[]args)
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//打开确认选项,关掉名称空间敏感性选项。
factory.setValidating(false);
factory.setNamespaceAware(false);
DocumentBuilder builder;
try {
builder = factory.newDocumentBuilder();
Document doc = builder.parse(new File("D:\\aa.xml"));
NodeList contacts=null;
contacts=doc.getElementsByTagName("contact");
for (int i = 0; i < contacts.getLength(); i++)
{
Node node = contacts.item(i);
NamedNodeMap nAttr=node.getAttributes();
if(nAttr.getNamedItem("性别").getNodeValue().equals("男"))
{
node.getParentNode().removeChild(node);
}
}
DOMSource domSrc= new DOMSource (doc);
File outfile = new File ("D:\\aa.xml");
//创建一个StreamResult对象
StreamResult stream = new StreamResult (outfile);
//调用JAXP中的XSLT引擎来实现输出DOM树到XML文件中的功能。
//输入为DOMSource对象,输出为StreamResut对象。
//首先创建一个TransformerFactory对象,再由此创建Transformer对象,使用它来输出XML文档。
TransformerFactory tranfac=TransformerFactory.newInstance();
Transformer trans=tranfac.newTransformer ();
Properties properties = trans.getOutputProperties();
properties.put(OutputKeys.INDENT,"yes");
properties.setProperty(OutputKeys.ENCODING,"GB2312");
trans.setOutputProperties(properties); //调用Transformer对象 的transform()方法输出xml,
trans.transform(domSrc,stream); } catch (ParserConfigurationException 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();
} catch (TransformerConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}
{
node.getParentNode().removeChild(node);
}这边应该改成
if(nAttr.getNamedItem("性别").getNodeValue().equals("男"))
{
i--;
node.getParentNode().removeChild(node);
}