package csm.doxml;
/*增加属性列用*/
import java.util.ArrayList;
public interface Add_Attributes{
public static ArrayList subNameList=new ArrayList();
public void addAttribute(String as);
}
package csm.doxml;
public class Produce_ID{
public String A;
public String B;
public Produce_ID(){}
public Produce_ID(String A2,String B2){this.A=A2;this.B=B2;}
public void setA(String A1){this.A=A1;}
public void setB(String B1){this.B=B1;}
public String getA(){return A;}
public String getB(){return B;}
}
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文件的类容,并生成一个Produce_ID列表,它默认的文件名字为defaultfilename
*也可以设置setFilename() *
*
**/
public class ReadConfigs implements Add_Attributes{
String filename;
private static String defaultfile="product.xml";
public ReadConfigs()
{
filename=defaultfile;
subNameList.add("A");
subNameList.add("B");
subNameList.add("C");
subNameList.add("D");
}
/*设置文件名*/
public void setFileName(String filenames)
{
filename=filenames;
}
/*增加读取的属性列*/
public void addAttribute(String as)
{subNameList.add(as);}
/*获取料号A+B*/
public ArrayList getProd_ID(){
ArrayList ProdList=new ArrayList();
ReadXmlF rf=new ReadXmlF(filename);
String type=null;
Element root=null;
ArrayList typeList=new ArrayList();
try{
int flags=rf.readXML();/*读xml文件*/
printf("flag="+flags);
root=rf.getRoot();/*获取根*/
type=rf.getFirstType();/*获取第一个子结点的名字*/
}catch(Exception e){printf(e.getMessage());}
if(root==null)printf("root is null "); /*获取子结点 A*/ printf(VA+" "+VB); protected ArrayList getTypeList(){ /*获取子结点子结点的值*/ } public static void main(String args[]){ } import java.io.File; try{ }catch(Exception e){}
if(root!=null)
{
NodeList lihao=root.getElementsByTagName(type);
for(int i=0;i
String VA=getValue(i,lihao,String.valueOf(subNameList.get(0)));
String VB=getValue(i,lihao,String.valueOf(subNameList.get(1)));
/*生成一个流水号Produce_ID 并加入ProdList*/
ProdList.add(new Produce_ID(VA,VB));
}//end for
}//end if
if(ProdList.size()>0)return ProdList;
return null;
}
}
public String getValue(int i,NodeList root,String type){
String value=null;
Element subNode=(Element)root.item(i);
NodeList subName=subNode.getElementsByTagName(type);
if(subName.getLength()==1){
Element e=(Element)subName.item(0);
Text t=(Text)e.getFirstChild();
value=String.valueOf(t.getNodeValue());
return value;
}
/*打印结果*/
private void printf(String content)
{
System.out.println("type1=:"+content);
}
ReadConfigs rx=new ReadConfigs();
try{
ArrayList a=rx.getProd_ID();
for(int i=0;i
}catch(Exception e){
System.out.println("=:"+e.getMessage());
}
}
package csm.doxml;
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;/*子结点的子结点*/
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
//ro=rf.getRoot();
if(ro==null)
System.out.println("ro is null");
else
System.out.println("ro is not null");
}
}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7739550/viewspace-428165/ ,如需转载,请注明出处,否则将追究法律责任。