Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 解析字符串化XML的多个属性_Java_Xml - Fatal编程技术网

Java 解析字符串化XML的多个属性

Java 解析字符串化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。我想要解析和获取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: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;
}