| 发表于:2007-04-01 02:17:49 楼主 |
我有一个xml 的文件当我用java sax 把它的资料拿出的时候遇到 <manager/> 这个是代表什么意思呢?我应该怎么把是不是manager这个元素拿出来呢 拿出来呢? -------------------------------------------------------------- xml 文件 <?xml version = "1.0 " standalone = "yes "?> <!doctype company [ <!element company (department+)> <!element department (stafflist)> <!attlist department name cdata #required > <!element stafflist (fulltimestaff ¦parttimestaff)+> <!element fulltimestaff (name, id, salary, manager?)> <!element parttimestaff (name, id, hourlysalary)> <!element salary (#pcdata)> <!element id (#pcdata)> <!element name (#pcdata)> <!element manager empty> <!element hourlysalary (#pcdata)> ]> <company> <department name = "product development "> <stafflist> <fulltimestaff> <name> john tan seng huat </name> <id> s6512345j </id> <salary> 4500.00 </salary> <manager/> </fulltimestaff> <fulltimestaff > <name> peter chua sim lai </name> <id> s6934345c </id> <salary> 2800.00 </salary> </fulltimestaff> <parttimestaff> <name> cindy lam lian choo </name> <id> s6734322k </id> <hourlysalary> 35.00 </hourlysalary> </parttimestaff> <fulltimestaff > <name> anisah bte ismail </name> <id> s6922339b </id> <salary> 3100.00 </salary> </fulltimestaff> </stafflist> </department> <department name = "customer service "> <stafflist> <fulltimestaff> <name> noor ali bin mohamed </name> <id> s6412388j </id> <salary> 4200.00 </salary> <manager/> </fulltimestaff> <fulltimestaff> <name> hanisah bte salleh </name> <id> s6934311f </id> <salary> 1800.00 </salary> </fulltimestaff> </stafflist> </department> <department name = "sales and publicity "> <stafflist> <fulltimestaff> <name> linda peh xue li </name> <id> s6423451j </id> <salary> 3500.00 </salary> <manager/> </fulltimestaff> <fulltimestaff> <name> thomas lye meng poh </name> <id> s7234344f </id> <salary> 1800.00 </salary> </fulltimestaff> <parttimestaff> <name> eugene oliver john </name> <id> s7533213f </id> <hourlysalary> 12.00 </hourlysalary> </parttimestaff> <parttimestaff> <name> mariah bte syafik </name> <id> s7835613c </id> <hourlysalary> 10.00 </hourlysalary> </parttimestaff> </stafflist> </department> </company> ----------------------------- java 文件 package tma02q3jan2007; import java.util.*; import org.xml.sax.*; import java.text.numberformat; public class staffdataprocessor extends handlerbase{ // instance variables, if any string department; double salary; string id; string name; boolean ismanager=true; double hourlysalary; string tag; //flags to indicate where we are boolean hasattribute; //create staffdata staffdata data; public static void main(string[] args){ //main method //sets up the xml parser and connects it to the file catalogue.txt try { class loadedclass = class.forname( "com.ibm.xml.parser.saxdriver "); parser xparser = (parser)loadedclass.newinstance(); staffdataprocessor sdp = new staffdataprocessor(); xparser.setdocumenthandler(sdp); xparser.seterrorhandler(sdp); xparser.parse( "company.txt "); } catch(exception e) {system.out.println( "problem starting xml processor "+e.getmessage());} } public void error(saxparseexception se){ // EXECuted when a serious error occurs in processing the // xml source system.out.println( "error: problem in processing " +se.getmessage()); } public void warning(saxparseexception se){ // EXECuted when a minor problem occurs when processing the // xml source system.out.println( "warning: problem in processing " +se.getmessage()); } public void startdocument() throws saxexception{ //EXECuted when the start of an element is encountered data=new staffdata(); system.out.println( "...processing started "); } public void startelement(string elementname, attributelist al) throws saxexception{ //EXECuted when the start of an element is encountered tag = elementname; if (elementname.equals( "department ")){ // check whether there is any attributes if (al.getlength() == 1) { hasattribute = true; department =al.getvalue(0); } else hasattribute = false; } } public void endelement(string elementname) throws saxexception{ //EXECuted when the end of an element is encountered if (elementname.equals( "parttimestaff ")) { data.createparttimestaffrecord(department,name,id,hourlysalary); // should add the information here to the database, // since the xml record has been read //if(elementname.equals( "stafflist ")){ //data.createparttimestaffrecord(department,name,id,hourlysalary); // if (hasattribute){ //if(elementname.equals( "parttimestaff ")){ //data.createparttimestaffrecord(department,name,id,hourlysalary); // } } else if(elementname.equals( "fulltimestaff ")){ if(elementname.equals( "manager ")) data.createfulltimestaffrecord(department,name,id,salary,true); else data.createfulltimestaffrecord(department,name,id,salary,false); } // } //} } public void enddocument() throws saxexception{ numberformat nf = numberformat.getinstance(); nf.setmaximumfractiondigits(2); nf.setminimumfractiondigits(2); string partdetail=data.getdetails( "parttimestaff "); system.out.println(partdetail); system.out.println( " "); double parttotalsalary=data.gettotalsalary( "parttimestaff "); system.out.println( "total hourlysalary "+nf.format(parttotalsalary)); system.out.println( " "); system.out.println( " "); string fuldetail=data.getdetails( "fulltimestaff "); system.out.println(fuldetail); system.out.println( " "); double fultotalsalary=data.gettotalsalary( "fulltimestaff "); system.out.println( "total monthly salary "+nf.format(fultotalsalary)); //EXECuted when processing is finished system.out.println( " "); system.out.println( "...finished processing document "); } public void characters(char[] chars, int start, int length)throws saxexception{ //string processing string stringread = new string(chars, 0, length); string s= " "; boolean ismanager=true; //check flags and save as per flag status if (tag.equals( "name ")) name = stringread; else if (tag.equals( "id ")) id = stringread; else if (tag.equals( "manager/ ")) stringread= "**manager** "; else if(tag.equals( "salary ")) salary =double.parsedouble(stringread); else if(tag.equals( "hourlysalary ")) hourlysalary=double.parsedouble(stringread); } } 请高人指教。 |
|
|
|
|