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");

}

}

101

Kiran

Pai

22

12300

102

Bill

Gates

22

12300

103

Steve

Jobs

22

12300

104

joe

singh

25

6300

java ssssss_javassssss相关推荐

  1. springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据

    SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...

  2. Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几

    Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几 //获得入参的日期 Calendar cd = Calendar.getInstance(); cd.setTime(date ...

  3. 在k8s中使用gradle构建java web项目镜像Dockerfile

    在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...

  4. Java | kotlin 手动注入bean,解决lateinit property loginService has not been initialized异常

    kotlin.UninitializedPropertyAccessException: lateinit property loginService has not been initialized ...

  5. SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos

    SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...

  6. OpenAPI使用(swagger3),Kotlin使用swagger3,Java使用swagger3,gradle、Maven使用swagger3

    OpenAPI使用(swagger3) demo见Gitte 一.背景及名词解释 OpenAPI是规范的正式名称.规范的开发工作于2015年启动,当时SmartBear(负责Swagger工具开发的公 ...

  7. Gradle错误提示:Java home supplied via ‘xxx.xxx.xxx‘ is invalid

    Gradle错误提示:Java home supplied via 'org.gradle.java.home' is invalid 描述:在使用idea采用gradle进行依赖的管理功能,当想切换 ...

  8. 查看Hotspot源码,查看java各个版本源码的网站,如何查看jdk源码

    java开发必知必会之看源码,而看源码的第一步则是找到源码

  9. java基本类型转换,随记

    java基本类型转换: double double 转 long double random = Math.round(Math.random()*10000); long l = new Doubl ...

最新文章

  1. jdbc驱动_JDBC概述和CRUD
  2. 硕士论文评审记录2021年春季
  3. 不喜欢冷漠,喜欢笑容、热情和拥抱
  4. 写出现代计算机网络的三个方面的应用,《计算机应用基础》统考模拟试题一及参考答案0...
  5. 修改可选项文件实现自动连接数据库服务器
  6. WiFi 热点共享设置
  7. Java设计模式之策略模式---写的比较有趣,推荐大家看看
  8. Angular 根据指定条件动态决定是否显示自定义的popup hover Component
  9. zigbee与WiFi模块和蓝牙模块的区别是什么?
  10. android获取系统当前年月日时分秒的时间
  11. 读【重构】(3)——感悟重构——Decompose Conditional(分解条件式)
  12. #2009. 「SCOI2015」小凸玩密室
  13. python基础编程语法-Python基础语法介绍:面向对象编程(上)
  14. (好文章搬个砖)MySQL索引背后的数据结构及算法原理
  15. 消息队列简介-原理与应用
  16. zscore标准化步骤_数据的标准化
  17. 网易2017校招合唱团
  18. uWSGI, Gunincorn, 啥玩意儿?
  19. Vue-Waterfall-Easy插件详细使用教程
  20. html英文颜色大全,html英文颜色名称全集

热门文章

  1. node 微信支付 V3版本签名生成
  2. 概率论与数理统计笔记第一天
  3. 电子化采购管理系统,竞争性谈判报价8个典型问题
  4. java时针_Java 设计一个clock类 要求实现时针,分针,秒针
  5. Java判断三个球的大中小_玩进球数有门道 三种判断大小球的典型方法
  6. 树莓派直接连接笔记本电脑方法
  7. html5多线程例子,javascript的单线程事件循环及多线程介绍
  8. css伪类渐变,CSS3文字 渐变内发光投影效果_css
  9. VMware API接口开发文档
  10. 什么是 APN、CMWAP、CMNET?