2013-01-04 62 views
0

我试图用SAX标识一个属性。我的XML是如下Android中的SAX解析搜索属性

<DAY VALUE="1"> 
    <BREAKFAST>0700</BREAKFAST> 
    <LUNCH>1200</LUNCH> 
    <DINNER>1900</DINNER> 
</DAY> 
<DAY VALUE="2"> 
    <BREAKFAST>0730</BREAKFAST> 
    <LUNCH>1230</LUNCH> 
    <DINNER>1930</DINNER> 
</DAY> 

和我的startElement代码如下:

@Override 
    public void startElement(String uri, String localName, String qName, 
      Attributes attributes) throws SAXException { 
     elementOn = true; 
     if (localName.equals("DAY")) 
     { 
      data = new XMLGettersSetters(); 
     } 
    } 

上面的代码将找到的第一个元素"DAY",给我的内容,但没有剩余DAY元素。

有没有一种方法可以搜索属性?我旨在获取当月的当天,然后在xml中搜索当天。例如,如果今天是第二个,然后我想在XML文件中搜索DAY VALUE="2"并获得子元素

==编辑

如果我修改我的XML来

<DAY_1> 
     <BREAKFAST>0700</BREAKFAST> 
     <LUNCH>1200</LUNCH> 
     <DINNER>1900</DINNER> 
    </DAY_1> 
    <DAY_2> 
     <BREAKFAST>0730</BREAKFAST> 
     <LUNCH>1230</LUNCH> 
     <DINNER>1930</DINNER> 
    </DAY_2> 

和代码:

if (localName.equals("DAY_2")) 
     { 
      data = new XMLGettersSetters(); 
     } 

我得到了NullPointerException但如果类logcat中没有标明该名称。它指的是其他类,但我注释掉那些行

回答

2

,你可以得到的属性值是这样的:

if (localName.equals("DAY")){ 
    String day = ""; 
    if (attributes.getValue("VALUE") != null) { 
     day = attributes.getValue("VALUE"); 
    } 
       //data = new XMLGettersSetters(); 
    } 
+0

是的,我已经试过了,但应用程序崩溃,当我尝试使用天变量。 – Santiago

+0

然后发布您的新片段,并且错误日志 –

+0

'if(localName.equals(“DAY”)){ String day =“”; (attributes.getValue(“VALUE”)!= null){ day = attributes.getValue(“VALUE”); System.out.println(“VALUE:”+ day); } }' 它得到第一个元素与子元素。我在日志中获得'VALUE:1',但是当它进入元素时,我得到一个NullPointer异常 - 无法启动活动SAXParserActivity – Santiago