Java 解析字符串化XML的多个属性
下面是XML。我想要解析和获取id。但是想要那些具有INT值的id。就像下面的XML中一样,有四个id标记。我想要那些没有值的作为n/aJava 解析字符串化XML的多个属性,java,xml,Java,Xml,下面是XML。我想要解析和获取id。但是想要那些具有INT值的id。就像下面的XML中一样,有四个id标记。我想要那些没有值的作为n/a <?xml version=\"1.0\" ?<xs:nml xmlns:xs=\"http://www.netgear.com/protocol/transaction/NMLSchema-0.9\" src=\"nas\" dst=\"dpv_1349084626000\" locale=\"en-us\"> <xs:transac
<?xml version=\"1.0\" ?<xs:nml
xmlns:xs=\"http://www.netgear.com/protocol/transaction/NMLSchema-0.9\" src=\"nas\" dst=\"dpv_1349084626000\" locale=\"en-us\">
<xs:transaction ref_id=\"njl_id_991\" status=\"success\">
<xs:response ref_id=\"njl_id_991\" status=\"success\">
<xs:result
xmlns:ns3=\"http://www.w3.org/2001/XMLSchema-instance\" ns3:type=\"xs:exResult\">
<xs:get-s resource-type=\"Devices\">
<Device_Collection>
<Device>
<alias>nas-1C-CA-AE</alias>
<id>3374</id>
<license>
<ExpiredTime>n/a</ExpiredTime>
<id>n/a</id>
</license>
<model>qwerty</model>
<online>true</online>
</Device>
<Device>
<alias>nas-1C-CA-AE</alias>
<id>3375</id>
<license>
<ExpiredTime>n/a</ExpiredTime>
<id>n/a</id>
</license>
<model>qwerty1</model>
<online>true</online>
</Device>
</Devices>
</xs:get-s>
</xs:result>
</xs:response>
</xs:transaction>
}那么你试了什么?是什么问题阻止了你做你想做的事情?实际上我使用了SAX解析器,只获取第一个id。没有其他问题请添加你的最佳尝试代码,我们可以从那里开始。我已更新。请检查一次
private boolean flagId = false;
private int count = 0;
private final DeviceResponse deviceResponse = new DeviceResponse();
@Override
public void startElement(final String uri, final String localName, final String qName, final Attributes attributes)
throws SAXException {
if (qName.equalsIgnoreCase("id")) {
flagId = true;
count++;
}
}
@Override
public void endElement(final String uri, final String localName, final String qName) throws SAXException {
}
@Override
public void characters(final char ch[], final int start, final int length) throws SAXException {
if (flagId && count == 1) {
final String id = new String(ch, start, length);
flagId = false;
deviceResponse.setId(id);
}
}
/**
* @return the deviceResponse
*/
public DeviceResponse getDeviceResponse() {
return deviceResponse;
}