日期:2014-05-20  浏览次数:20630 次

这样的xml文件怎么用java解析啊
<?xml version=”1.0” encoding=”utf-8”?>
<svr_get_orderHis>
<bill_count>1</bill_count>
<page_count>1</page_count>
<page_index>1</page_index>
<bill_list>
<bill bill_id=”B012500008874” bill_status=”8” bill_time=”2013-01-25 15:13:18”  charge_state=”-1”  charge_time='0001-01-01 00:00:00'  />
</bill_list>
<error_code>0</error_code>
<error_detail>成功!</error_detail>
</svr_get_orderHis>



我要取charge_state=”-1” 这个值,应该怎么取啊,本来不想解析xml,但是我用indexOf()这个函数判断的话,一直都是-1,只要能判断这个字符串存在这个xml字符串中就可以,应该怎么做呢?

------解决方案--------------------
看你用什么解析了。。
如果单纯的用输入输出流的话,估计给你整一阵子了。
但是如果SAXReader的话,就会方便很多。

InputStream is=Propertie.class.getClassLoader().getResourceAsStream("conf/properties.xml");
public static void sread(InputStream is) {
if(is==null){
System.out.println("properties inputStream is null");//测试用
}
prop = new Properties();
SAXReader reader = new SAXReader();
try {
Document doc = reader.read(is);
Element root = doc.getRootElement();

Iterator<?> rIt = root.elementIterator();
while(rIt.hasNext()) {
Element e = (Element) rIt.next();
Iterator<?> everyIt = e.elementIterator();
while(everyIt.hasNext()) {
Element elem = (Element) everyIt.next();
prop.setProperty(elem.getName(),elem.getTextTrim());

}
}

} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}

------解决方案--------------------
用dom4j的话 直接 节点.attributeValue("charge_state")就可以取得了