- 浏览: 29568 次
- 性别:
- 来自: 深圳
最新评论
-
红袖添香夜半读:
分析的很好,谢谢。
DOM解析XML——初步(1) -
红袖添香夜半读:
很好,对我帮助很大,谢谢分享。
DOM解析XML——完整(2)
文章列表
在网上search了很多DOM解析XML的代码,总觉得不好,主要原因是都有这样的代码:
document.getElementsByTagName("tagName");
我希望能有一个对XML标签名没有限定的处理逻辑,只需要传入XML文件的路径,即可对此XML进行解析。一直找不到,就自己手写了一个。
DOM解析有三点是很重要的,可能我的描述并不准确,因为我是在debug过程中分析出来的,并没有去参看DOM的文档。
DOM将回车(换行符)和节点内容(Value)都是作为节点来解析的。
因为第一点,DOM将节点进行了分类,主要是有两类:TEXT_NO ...
在使用DOM解析XML的时候,遇到一个问题:通过getNodeValue()获取节点value,但得到的却是"#text"和许多空格的问题,尝试之后,得到分析如下:
在DOM解析XML,如果用到了
NodeList nodeList = document.getElementsByTagName("tagName");
这样的方式来获取节点,并且用
nodeList.item(i).getFirstChild().getNodeValue()
这样的方式读取某个节点的值,需要注意一点的是,这里你传入的tagName必须是你要获 ...
在处理异常过程中,使用try catch进行异常捕获,try相当是声明了一个代码块,所以如果在try中声明变量的话,在try外面是不可以访问的。这点在异常进行处理时需要注意,如果一个变量或对象被多次使用,特别要注意。
代码示例如下:
public class Demo16{
public static void main(String args[]){
try{
int i=10;
int j=0;
System.out.println("开始捕获异常");
int temp=i/j;
}
catch(E ...
- 2010-05-24 21:42
- 浏览 786
- 评论(0)
先看下面一段代码:
//同过判断文件的结尾来读取文件
import java.io.File;
import java.io.InputStream;
import java.io.FileInputStream;
public class InputStreamDemo02
{
public static void main(String args[]) throws Exception{
File f = new File("E:"+File.separator+"java2"+File.separator+"Strea ...
- 2010-05-20 11:46
- 浏览 2245
- 评论(0)
在java中,可以使用InputStream对文件进行读取,就是字节流的输入。当读取文件内容进程序时,需要使用一个byte数组来进行存储,如此会有如下两个问题:
1.如何建立合适大小的byte数组,如果已知输入流的大小。
2.如果不知输入流的大小,则肯定需要建立一个很大的byte数组,那么byte中很可能有空的内容,那么如何正确合适的将byte数组的中的内容输出?
先看第一个问题:解决之道就是获取输入流的大小,创建此大小的byte数组。代码如下://使用InputStream从文件中读取数据,在已知文件大小的情况下,建立合适的存储字节数组
import java.io.File;
im ...
- 2010-05-20 11:35
- 浏览 2098
- 评论(0)
希尔排序是在直接插入排序上改进而来。
1.以一个增量temp将要排序的数组进行分组,所以距离为temp的倍数的元素在同一个组;
2.对每一个组进行快速插入排序;
3.改变增量,从复以上操作;
4.直至增量等于1,结束。
实现代码如下:
//希尔排序
public class Demo32
{
public static void main(String args[]){
int r[]={2,4,8,1,5,6,3,9,10,5,0,4,7};
fun(r);
for(int i=0;i<r.length;i++){
System.out. ...
基本数据类型自动向String转型
- 博客分类:
- java
对于java中的基本数据类型,都可以通过打包转换成其各自对应的包装类,然后通过调用toString方法进行转换成字符串。实际上,所有的基本数据类型都可以自动向String进行转换,验证代码如下:
//任何类型碰到String类型的变量或常量之后都会向String进行转型
public class Demo
{
public static void main(String args[]){
int i =10;
String str = "xiaoya";
String str2 = str+i;
System.out.println(str2 ...
- 2010-05-05 21:40
- 浏览 956
- 评论(0)
多态中向上转型后对属性的调用
- 博客分类:
- java
声明父类的引用指向子类的实例就是向上转型,向上转型发生后可以调用父类的方法,调用子类中覆写了的方法。但是不能单独调用子类独有的方法。要调用子类独有的方法需要通过向下转型。那么,如果调用属性呢,向上转型后分别调用子类独有的,父类独有的,父类和子类都有的属性,又会如何呢。向上转型发生后,只能调用父类属性,不能调用子类属性,虽然大多时候我们为了封装性都不会直接调用属性。
测试代码如下:
//多态中向上转型,访问父类属性和访问子类独有属性
class A
{
public String str = "A";
public void fun1(){
System. ...
- 2010-05-05 21:23
- 浏览 1340
- 评论(0)
关于equals和“==”的详解
- 博客分类:
- java
首先,equals,equals最常用的是在String下调用,用来比较两个字符串是否相同。但实际上equals是Object中的方法,String对其进行了覆写。Object中的equals方法是用来比较两个对象相等的,但是其默认的是按地址进行比较,并不能对内容进行比较。String覆写了此方法用来对内容进行比较。所以原来的equals与“==”可以说是在一定程度上是相同的。还有一点,在String中的equals方法比较的字符串,是大小写敏感的,即大小写相同的且内容一致的才会被equals判断换为相同,否则不相同。
关于“==”,当我们使用==来比较基本数据类型时,比较的是其值,只要他们的 ...
- 2010-05-01 22:17
- 浏览 745
- 评论(0)
冒泡排序:对数组进行遍历,每次遍历都是为了找出最大值,并将最大值放在最前面。
代码如下:
//冒泡排序
/*i 的每一次循环都会找出一个从score[i]往后的数中的最大值,并将它放在前面*/
public class ArrayDemo02
{
public static void main(String args[]){
int score[]={11,3,55,67,45,23,56,89,655,2,4,5,7,9,4,1,5,7,6,4,5,3,4,6,7,22};
for(int i=0;i<score.length;i++){
for(in ...
插入排序的思想:将要排序的数组分成两块,将后一块的数挨个提取出来,与第一块的数进行比较插入到合适位置。
代码如下:
//直接插入排序
public class Demo27
{
public static void main(String args[]){
int r[]={2,4,8,1,5,6,3,9,10,5,0,4,7};
for(int i=0;i<r.length;i++){
int temp = r[i];
int j=i-1;
while(j>=0&&temp<r[j]){
r[j+1]= ...
- 2010-04-28 22:40
- 浏览 825
- 评论(0)
生产者和消费者:当生产者在生产时,消费者等待。生产者生产完毕,唤醒消费者,消费者消费。消费者消费时,生产者等待,消费者消费完毕,唤醒生产者生产。实现代码如下:
//生产者和消费者
class Info
{
private String str1="中国";
private String str2="武汉";
public boolean flag=false;
public synchronized void setStr1(String str1){ //set方法
this.str1=str1;
}
public ...
- 2010-04-28 13:21
- 浏览 905
- 评论(0)
大家都知道,通过继承Runnable接口实现的多线程可以实现资源共享,那么如何通过继承Thread实现资源共享呢?在前面的文章已经介绍过了两种方式分别能实现资源共享和不能实现资源共享的原因。我们知道,static声明的变量是所有对象共有的,每一个对象对此变量的操作都会保存下来。所以我们可以通过此方式实现继承Thread下的资源共享。实现代码如下:
//尝试通过Thread和static实现资源共享
class MyThread extends Thread
{
private String name;
public static int ticket=10; //通过sta ...
- 2010-04-23 23:03
- 浏览 1165
- 评论(0)
当synchronized使用过多时,可能会造成死锁,那么死锁到底是怎么一回事呢。先看下面的代码,实现死锁:
//死锁的实现
class A
{
public void get(){
System.out.println("A说:我开始启动了,B,给我你的资源");
}
public void say(){
...
- 2010-04-23 13:23
- 浏览 727
- 评论(0)
我们知道,使用Runnable方式实现线程可以实现资源共享,但是,依然存在问题,看下面的代码:
//需要同步的原因
class MyThread implements Runnable
{
private int ticket=10;
public void run(){
for(int i =0;i<100;i++){
if(ticket>0){
try{
Thread.sleep(2000); //当加入此语句后,会有延迟效果,导致资源超出使用范围
}catch(InterruptedException e){} ...
- 2010-04-21 10:14
- 浏览 879
- 评论(0)