javassssss


package csm.doxml;

import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.*;
import java.util.ArrayList;
/*读取xml文件并返回根结点,第一个子结点名字,第一个子结点的属性列*
 *
 **/
public class ReadXmlF{
 
public Element root=null;/*根结点*/
public String type=null;/*第一个结点类型名字*/
public ArrayList subNodeList=new ArrayList();/*子结点类型名字*/
String filename="product.xml";
ArrayList LevelOne=new ArrayList();
public ReadXmlF(){}
public ReadXmlF(String filenames){
 filename=filenames; 
 }


protected int readXML()throws Exception{
 /*创建文档实例*/
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=null;
NodeList children=null;/*子结点的子结点*/

try{
 db=dbf.newDocumentBuilder();
 }catch(ParserConfigurationException e1){
 printf(":"+e1.getMessage());
 return -1; 
 }
Document doc=null;
try{
 doc=db.parse(filename);  
 }
catch(DOMException e2){
 printf(":"+e2.getMessage());
    return -2;
                      }
catch(Exception e3){     
 printf(e3.getMessage()); 
                  return -3;
                  }
 /*开始取根*/
root=doc.getDocumentElement();
/*取第一个子结点类型*/
   if(root!=null)
    {
  children=root.getChildNodes();
  int len=children.getLength();
 
  printf("root.length=:"+String.valueOf(len));
 
  if(children.getLength()>0)//nodelist下标从1开始
    for(int k=0;(2*k+1)      {
      
      type=String.valueOf(children.item(2*k+1).getNodeName());
      LevelOne.add(type);
      }
    }
/*再取第二层结点的子结点*/
   Node peak = children.item(1);
     
    for (int j=1; j    {
   String typename=String.valueOf(peak.getChildNodes().item(j++).getNodeName());
   subNodeList.add(typename);
   /**/printf("ch3:"+typename);
   }
  return 1;
}
/*返回第一层子结点名字*/
public ArrayList getFirstType(){
if(LevelOne.size()>0) return LevelOne;
else return null;
 }
/*返回第一层个子结点名字*/
protected ArrayList getSubNode(){
 if(subNodeList.size()>0)return subNodeList;
 return null; 
 } 
/*返回根结点*/
protected Element getRoot(){
 if(root!=null)return root;
 return null; 
 }
private void printf(String content){
  System.out.println(content);
}
public static void main(String[] args){
ReadXmlF rf=new ReadXmlF("test2.xml");
Element ro=null;
try{int flags=rf.readXML();
  ArrayList a=rf.getFirstType();
  System.out.println("s1="+a.size());
  //for(int i=0;i   // System.out.println("s1="+String.valueOf(a.get(i)));
    //ro=rf.getRoot();
 

}catch(Exception e){}
if(ro==null)
     System.out.println("ro is null");
     else
     System.out.println("ro is not null"); 
 }

 
 
 
 
 
 <?xml version="1.0" encoding="gb2312" ?>


101
Kiran
Pai
22
12300


102
Bill
Gates
22
12300


103
Steve
Jobs
22
12300


104
joe
singh
25
6300


 
 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7739550/viewspace-428166/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7739550/viewspace-428166/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值