# Mit SAX Parser XML Attribute auswerten



## cata (13. Sep 2010)

Hallo zusammen ich habe folgendes Problem: ich möchte nachfolgendes XML file auslesen und bearbeiten. Das auslesen gelingt mir auch  Das auslesen ohne den <!DOCTYPE> Tag funktioniert bestens, doch wie lese ich das File mit  dem <!DOCTYPE> Tag aus, also brauch es den überhaupt? Weiter möchte ich dan eine unterscheidung des Tags <affichage> wenn  das Attribut den Wert "button" hat soll ein Button dargestellt werden steht was anderes drin muss der Tag nicht dar gestellt werden. 
In einemnächsten Schritt möchte ich denn Tag <wagolink> mit dem Button verknüpfen also sprich wen der Knopf gedrückt wird soll ein Http Request also dieser Link gesendet werden.
Danke für eure Hilfe und sorry für meine vielleicht anfängerhaften Fragen aber Google hat mir nur ansatzweise helfen können.

```
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wagoml PUBLIC "-//wagoml org//DTD WAGOML 1.0//EN" 
"http://pautex.fr/wago/DTD/WagoML-1.0.dtd">
<wagoml version="1.0" xmlns="http://pautex.fr/wago/">
   <items>
<item id="4">
			<title>Alles Licht Ein</title>
			<name>AllesEin</name>
			<description>Alles Ein</description>
			<type>direct</type>
			<affichage>button</affichage>
			<IW><!--#READPI ADR=MW214&FORMAT=%d--></IW>
			<wagolink>http://192.168.92.100/WRITEPI?ADR1=MX200.3&amp;VALUE1=1&amp;FORMAT1=%d</wagolink>
		</item>
```

xmlhandler.java

```
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class MyXMLHandler extends DefaultHandler {
    Boolean currentElement = false;
    String currentValue = null;
  public static SitesList sitesList = null;


    public static SitesList getSitesList() {
        return sitesList;
    }

    public static void setSitesList(SitesList sitesList) {
        MyXMLHandler.sitesList = sitesList;
    }

    /** Called when tag starts ( ex:- <name>AndroidPeople</name> 
     * -- <name> )*/
    @Override
    public void startElement(String uri, String localName, String qName,
            Attributes attributes) throws SAXException {
        currentElement = true;
        
        if (localName.equals("items"))
        {
            /** Start */
            sitesList = new SitesList();
        } else if (localName.equals("item")) {
            /** Get attribute value */
            String attr = attributes.getValue("id");
            sitesList.setid(attr);
        }
        else if (localName.equals("affichage")) 
            sitesList.setaffichage(currentValue);
     }
         
     
    

    /** Called when tag closing ( ex:- <name>AndroidPeople</name> 
     * -- </name> )*/
    @Override
    public void endElement(String uri, String localName, String qName)
            throws SAXException {
        
        
        
        currentElement = false;
        /** set value */
        if (localName.equalsIgnoreCase("title"))
            sitesList.settitle(currentValue);
        if (localName.equalsIgnoreCase("affichage"))
            
            sitesList.setaffichage(currentValue);
        else if (localName.equalsIgnoreCase("item"))
            sitesList.setitem(currentValue);

    }




    /** Called to get tag characters ( ex:- <name>AndroidPeople</name> 
     * -- to get AndroidPeople Character ) */
    @Override
    public void characters(char[] ch, int start, int length)
    throws SAXException {
     if (currentElement) {
                   currentValue = new String(ch, start, length);
                    currentElement = false;
                }
             
                }
             
    }
```


----------



## Noctarius (13. Sep 2010)

Für deinen Anwendungszweck dürfte Lycia perfekt sein  Schau dir einfach mal den Link in der Signatur an. Bei Fragen stehe ich dir gerne zur Verfügung.


----------



## cata (15. Sep 2010)

danke scchaue mir das mal komme gerne auf dein angebot zurück


----------



## Noctarius (15. Sep 2010)

Wie in der PN schon erwähnt ist die Entwicklerversion für Android noch nicht ganz fertig. Bei weiterem Interesse könnte ich aber mehr Zeit in diesen Zweig investieren


----------

