Java xml解析 - 查找特定结果:
问题描述:
因此,过去几天我一直在玩萨克斯,我已经完全无法处理我遇到的这个问题。Java xml解析 - 查找特定结果:
假设我有以下XML
<PowerSystemRegions>
<PowerSystemRegion>
<RegionId>1</RegionId>
<RegionName>New England</RegionName>
<Status>Normal</Status>
<DateUpdated>2011-12-22T10:55:51.000-05:00</DateUpdated>
</PowerSystemRegion>
<PowerSystemRegion>
,我想先检查,以确保该地区的名称是新英格兰,然后拉掉基础的的状态,但我不认为它会加载下一个qName或任何东西,因为它会再次从main调用。
这里是我到目前为止,但我完全卡住:
public void startElement (String uri, String name, String qName, Attributes atts) {
boolean region = false;
boolean regionName = false;
boolean regionStatus = false;
if (qName.compareTo("RegionName") == 0) {
region = true;
if(atts.getValue(0).compareTo("New England") == 0){
}
if (currentStatus == null){
String cCond = atts.getValue(0);
currentStatus = cCond;
}
}
}
这是我的想法比较名字,一旦所有3个布尔值分别设置我没问题......但随后它让我感到它不会那样工作,因为在字符串中只有一个qName ... Halp?
答
这已经有一段时间,因为我与萨克斯的工作,但我会尝试: 你可以在你的处理器添加字段,如:
public class SaxHandler {
Integer regionId;
String regionName;
String regionStatus;
(...)
}
所以,在你开始元素,你让这样的:
public void startElement (String uri, String name, String qName, Attributes atts) {
if (qname.equals("RegionName") {
regionName = atts.getValue(0);
}
if (qname.equals("RegionId") {
regionId = Integer.parseInt(atts.getValue(0));
}
if (qname.equals ("Status") {
if(regionName.equals ("New England")) {
//Do what you want here
}
}
}
顺便说一句,它更好的使用等于而不是compareTo。只有在对元素进行排序时才使用compareTo;)
编辑:在对象中思考,更好地使用类,而不是象我那样的字段。使用PowerSystem对象从xml收集数据;)