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;
}
}
}