这是我写的一个例子,你看一下吧:
xmlDemo.xml
************************
<?xml version="1.0" encoding="GB2312"?>
<ReportStyle>
<Report name="资产负债表">
<ItemName itemCode="0">
<value><![CDATA[资产负债表 itemNum0]]></value>
</ItemName>
<ItemName itemCode="1">
<value><![CDATA[资产负债表 itemNum1]]></value>
</ItemName>
<ItemName itemCode="2">
<value />
</ItemName>
</Report>
<Report name="现金流量表">
<ItemName itemCode="0">
<value />
</ItemName>
<ItemName itemCode="1">
<value />
</ItemName>
<ItemName itemCode="2">
<value />
</ItemName>
<ItemName itemCode="3">
<value><![CDATA[现金流量表 itemNum3]]></value>
</ItemName>
</Report>
<Report name="销售成本表">
<ItemName itemCode="0">
<value />
</ItemName>
<ItemName itemCode="1">
<value />
</ItemName>
<ItemName itemCode="2">
<value><![CDATA[销售成本表 itemNum2]]></value>
</ItemName>
<ItemName itemCode="3">
<value />
</ItemName>
<ItemName itemCode="4">
<value />
</ItemName>
</Report>
</ReportStyle>*****************************************
解释程序为:
package xmldemo.jdom;import java.util.List;
import java.util.Iterator;
import org.jdom.Element;
import org.jdom.Document;
import org.jdom.input.SAXBuilder;
import java.io.FileInputStream;
import java.util.Vector;
import org.apache.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author tangb
* @version 1.0
*/public class ParseJdomXML {
private static final String DEFAULT_SAX_DRIVER_CLASS =
"org.apache.xerces.parsers.SAXParser";
private static List docList;
public ParseJdomXML() { }
public static Vector getReport(String xmlName) {
Vector reportVector = new Vector();
SAXBuilder builder = new SAXBuilder(DEFAULT_SAX_DRIVER_CLASS);
try { FileInputStream fis = new FileInputStream(xmlName);
Document doc = builder.build(fis);
Element rootEle = doc.getRootElement();
docList = rootEle.getChildren("Report");
//method 1
for (int i = 0; i < docList.size(); i ++) {
Element tempEle = (Element)docList.get(i);
String reportName = tempEle.getAttributeValue("name");
reportVector.add(tempEle.getAttribute("name"));
System.out.println("reportName " + tempEle.getAttribute("name"));
}
//method 2
/* Iterator reportItr = docList.iterator();
while (reportItr.hasNext()) {
Element tempEle = (Element) reportItr.next();
String reportName = tempEle.getAttributeValue("name");
reportVector.add(tempEle.getAttribute("name"));
System.out.println("reportName " + tempEle.getAttribute("name"));
}*/
System.out.println("***********************************************");
}
catch (Exception ex) {
ex.printStackTrace();
}
return reportVector;
}
public static Vector getItem(String reportName) {
Vector itemVector = new Vector();
//method 1
for (int i = 0; i < docList.size(); i ++) {
Element tempEle = (Element)docList.get(i);
String str = tempEle.getAttributeValue("name");
if (reportName.equals(str)) { //判断是否和传过来的名字相同
List tempList = tempEle.getChildren();
Iterator itemItr = tempList.iterator();
while (itemItr.hasNext()) {//如果相同则找出所有这个名字的内容
Element itemEle = (Element) itemItr.next();
Element valueEle = itemEle.getChild("value");
String itemValue= "";
if (null != valueEle) {
itemValue = valueEle.getText();
System.out.println("itemValue " + itemValue);
itemVector.add(itemValue);
} }
System.out.println("***********************************************");
}
}
//method 2
/*Iterator reportItr = docList.iterator();
while (reportItr.hasNext()) { //得到所有的名字
Element tempEle = (Element) reportItr.next();
String str = tempEle.getAttributeValue("name");
if (reportName.equals(str)) { //判断是否和传过来的名字相同
List tempList = tempEle.getChildren();
Iterator itemItr = tempList.iterator();
while (itemItr.hasNext()) {//如果相同则找出所有这个名字的内容
Element itemEle = (Element) itemItr.next();
Element valueEle = itemEle.getChild("value");
String itemValue= "";
if (null != valueEle) {
itemValue = valueEle.getText();
System.out.println("itemValue " + itemValue);
itemVector.add(itemValue);
} }
System.out.println("***********************************************");
} }*/
return itemVector;
}
public static String getCode(String reportName, String value) {//根据值得到 itemCode
Iterator reportItr = docList.iterator();
while (reportItr.hasNext()) {
Element tempEle = (Element) reportItr.next();
String str = tempEle.getAttributeValue("name");
if (reportName.equals(str)) {
List tempList = tempEle.getChildren();
Iterator itemItr = tempList.iterator();
while (itemItr.hasNext()) {
Element itemEle = (Element) itemItr.next();
Element valueEle = itemEle.getChild("value");
if (null != valueEle) {
String itemName = valueEle.getText();
if (itemName.equals(value)) {
System.out.println("reportName = " + reportName + "|| " + " value = " + value + "|| " + "itemCode = "
+ itemEle.getAttributeValue("itemCode"));
return (String)itemEle.getAttributeValue("itemCode");
}
} }
} }
return null;
}
public static void main(String[] args) {
try {
ParseJdomXML.getReport("XML/xmlDemo.xml"); ParseJdomXML.getItem("现金流量表");
ParseJdomXML.getCode("资产负债表", "资产负债表 itemNum1");
}
catch (Exception ex) {
ex.printStackTrace();
} }
}********************************
好运!
xmlDemo.xml
************************
<?xml version="1.0" encoding="GB2312"?>
<ReportStyle>
<Report name="资产负债表">
<ItemName itemCode="0">
<value><![CDATA[资产负债表 itemNum0]]></value>
</ItemName>
<ItemName itemCode="1">
<value><![CDATA[资产负债表 itemNum1]]></value>
</ItemName>
<ItemName itemCode="2">
<value />
</ItemName>
</Report>
<Report name="现金流量表">
<ItemName itemCode="0">
<value />
</ItemName>
<ItemName itemCode="1">
<value />
</ItemName>
<ItemName itemCode="2">
<value />
</ItemName>
<ItemName itemCode="3">
<value><![CDATA[现金流量表 itemNum3]]></value>
</ItemName>
</Report>
<Report name="销售成本表">
<ItemName itemCode="0">
<value />
</ItemName>
<ItemName itemCode="1">
<value />
</ItemName>
<ItemName itemCode="2">
<value><![CDATA[销售成本表 itemNum2]]></value>
</ItemName>
<ItemName itemCode="3">
<value />
</ItemName>
<ItemName itemCode="4">
<value />
</ItemName>
</Report>
</ReportStyle>*****************************************
解释程序为:
package xmldemo.jdom;import java.util.List;
import java.util.Iterator;
import org.jdom.Element;
import org.jdom.Document;
import org.jdom.input.SAXBuilder;
import java.io.FileInputStream;
import java.util.Vector;
import org.apache.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author tangb
* @version 1.0
*/public class ParseJdomXML {
private static final String DEFAULT_SAX_DRIVER_CLASS =
"org.apache.xerces.parsers.SAXParser";
private static List docList;
public ParseJdomXML() { }
public static Vector getReport(String xmlName) {
Vector reportVector = new Vector();
SAXBuilder builder = new SAXBuilder(DEFAULT_SAX_DRIVER_CLASS);
try { FileInputStream fis = new FileInputStream(xmlName);
Document doc = builder.build(fis);
Element rootEle = doc.getRootElement();
docList = rootEle.getChildren("Report");
//method 1
for (int i = 0; i < docList.size(); i ++) {
Element tempEle = (Element)docList.get(i);
String reportName = tempEle.getAttributeValue("name");
reportVector.add(tempEle.getAttribute("name"));
System.out.println("reportName " + tempEle.getAttribute("name"));
}
//method 2
/* Iterator reportItr = docList.iterator();
while (reportItr.hasNext()) {
Element tempEle = (Element) reportItr.next();
String reportName = tempEle.getAttributeValue("name");
reportVector.add(tempEle.getAttribute("name"));
System.out.println("reportName " + tempEle.getAttribute("name"));
}*/
System.out.println("***********************************************");
}
catch (Exception ex) {
ex.printStackTrace();
}
return reportVector;
}
public static Vector getItem(String reportName) {
Vector itemVector = new Vector();
//method 1
for (int i = 0; i < docList.size(); i ++) {
Element tempEle = (Element)docList.get(i);
String str = tempEle.getAttributeValue("name");
if (reportName.equals(str)) { //判断是否和传过来的名字相同
List tempList = tempEle.getChildren();
Iterator itemItr = tempList.iterator();
while (itemItr.hasNext()) {//如果相同则找出所有这个名字的内容
Element itemEle = (Element) itemItr.next();
Element valueEle = itemEle.getChild("value");
String itemValue= "";
if (null != valueEle) {
itemValue = valueEle.getText();
System.out.println("itemValue " + itemValue);
itemVector.add(itemValue);
} }
System.out.println("***********************************************");
}
}
//method 2
/*Iterator reportItr = docList.iterator();
while (reportItr.hasNext()) { //得到所有的名字
Element tempEle = (Element) reportItr.next();
String str = tempEle.getAttributeValue("name");
if (reportName.equals(str)) { //判断是否和传过来的名字相同
List tempList = tempEle.getChildren();
Iterator itemItr = tempList.iterator();
while (itemItr.hasNext()) {//如果相同则找出所有这个名字的内容
Element itemEle = (Element) itemItr.next();
Element valueEle = itemEle.getChild("value");
String itemValue= "";
if (null != valueEle) {
itemValue = valueEle.getText();
System.out.println("itemValue " + itemValue);
itemVector.add(itemValue);
} }
System.out.println("***********************************************");
} }*/
return itemVector;
}
public static String getCode(String reportName, String value) {//根据值得到 itemCode
Iterator reportItr = docList.iterator();
while (reportItr.hasNext()) {
Element tempEle = (Element) reportItr.next();
String str = tempEle.getAttributeValue("name");
if (reportName.equals(str)) {
List tempList = tempEle.getChildren();
Iterator itemItr = tempList.iterator();
while (itemItr.hasNext()) {
Element itemEle = (Element) itemItr.next();
Element valueEle = itemEle.getChild("value");
if (null != valueEle) {
String itemName = valueEle.getText();
if (itemName.equals(value)) {
System.out.println("reportName = " + reportName + "|| " + " value = " + value + "|| " + "itemCode = "
+ itemEle.getAttributeValue("itemCode"));
return (String)itemEle.getAttributeValue("itemCode");
}
} }
} }
return null;
}
public static void main(String[] args) {
try {
ParseJdomXML.getReport("XML/xmlDemo.xml"); ParseJdomXML.getItem("现金流量表");
ParseJdomXML.getCode("资产负债表", "资产负债表 itemNum1");
}
catch (Exception ex) {
ex.printStackTrace();
} }
}********************************
好运!
Thanks!