Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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 使用SAXParser进行xml解析_Java_Blackberry_Xml Parsing_Saxparser - Fatal编程技术网

Java 使用SAXParser进行xml解析

Java 使用SAXParser进行xml解析,java,blackberry,xml-parsing,saxparser,Java,Blackberry,Xml Parsing,Saxparser,我正在使用一个应用程序,其中放置了saxparking。要从纬度和经度获取城市和州名称,我正在使用googleapi。谷歌API网址 我想获取标题标签地址组件的long\u nameshort\u name和type 我成功地从这个XML中获取了所有信息,但问题是,当我试图获取类型标记值时。在这个标题中有两个type标记,我总是得到第二个type标记值 示例XML: <address_component> <long_name>Gujarat</long_name&

我正在使用一个应用程序,其中放置了
saxparking
。要从纬度和经度获取
城市和州
名称,我正在使用
googleapi
。谷歌API网址

我想获取标题标签
地址组件
long\u name
short\u name
type

我成功地从这个XML中获取了所有信息,但问题是,当我试图获取
类型
标记值时。在这个标题中有两个
type
标记,我总是得到第二个
type
标记值

示例XML:

<address_component>
<long_name>Gujarat</long_name>
<short_name>Gujarat</short_name>
<type>administrative_area_level_1</type>
<type>political</type>
</address_component>

古吉拉特邦
古吉拉特邦
行政区一级
政治的

如何获取
类型
标记值是
行政区级别1
以及
政治

我将数据添加到一个名为location.xml的文件中(如果您从web获取该数据,在获取该数据转换为Inputstream后,是否有自己的获取数据的逻辑将其传递给以下代码)我写了一个方法,你可以得到它

public void ReadAndWriteXMLFileUsingSAXParser(){

        try
        {
            DefaultHandler handler = new MyHandler();
//              parseXmlFile("infilename.xml", handler, true);
            SAXParserFactory factory = SAXParserFactory.newInstance();
            SAXParser saxParser = factory.newSAXParser();
            InputStream rStream = null;
            rStream = getClass().getResourceAsStream("location.xml");
            saxParser.parse(rStream, handler);
        }catch (Exception e) 
        {
            System.out.println(e.getMessage());
        }

    }
这是MyHandler类。最终数据存储到一个称为“数据”的向量中

您可以在数据向量中找到所有数据,也可以在解决方案中找到数据 作为

++++++++++++++古吉拉特邦

++++++++++++++古吉拉特邦

++++++++++++++行政区一级

++++++++++++++政治的


阅读教程。这将帮助您使用sax解析器解析xml文件。

我遇到了下面的链接,这非常容易开始-

我想你应该检查一下:
class MyHandler extends DefaultHandler {
    String rootname;Attributes atr;
    private boolean flag=false;private Vector data;
    public void startElement(String namespaceURI, String localName,
                             String qName, Attributes atts)  {
     rootname=localName;
     atr=atts;

     if(rootname.equalsIgnoreCase("address_component")){
         data=new Vector();
         flag=true;
     }


    }
    public void characters(char[] ch, int start, int length){
        String value=new String(ch,start,length);
        if(flag)
        {
            if(rootname.equalsIgnoreCase("type")){
                data.addElement(value) ;
                System.out.println("++++++++++++++"+value);
            }
            if(rootname.equalsIgnoreCase("long_name")){
                data.addElement(value) ;
                System.out.println("++++++++++++++"+value);
            }
            if(rootname.equalsIgnoreCase("short_name")){
                data.addElement(value) ;
                System.out.println("++++++++++++++"+value);
            }
        }

    }
    public void endElement(String uri, String localName, String qName){
        rootname=localName;
         if(rootname.equalsIgnoreCase("address_component")){
             flag=false;
         }
    }
}