2011-07-06 137 views
2

我正在使用SAX解析器解析xml。当我需要得到的数据是XML标签的主体时,所有东西都能正常工作。我遇到的唯一问题是何时需要的数据是该XML标记的属性值。我如何得到这个属性值?XML解析以获取属性值

<xml att="value"> Body </xml> 

假设这是一个标签,我能得到身体,但不珍惜我使用

代码:

URL url = new URL("http://example.com/example.xml"); 

SAXParserFactory spf = SAXParserFactory.newInstance(); 
SAXParser sp = spf.newSAXParser(); 

XMLReader xr = sp.getXMLReader(); 
ExampleHandler myExampleHandler = new ExampleHandler(); 
xr.setContentHandler(myExampleHandler); 

xr.parse(new InputSource(url.openStream())); 

public class ExampleHandler extends DefaultHandler { 
String buff = new String(""); 
boolean buffering = false; 

@Override 
public void startDocument() throws SAXException { 
    // Some sort of setting up work 
} 

@Override 
public void endDocument() throws SAXException { 
    // Some sort of finishing up work 
} 

@Override 
public void startElement(String namespaceURI, String localName, String qName, 
     Attributes atts) throws SAXException { 
    if (localName.equals("qwerasdf")) { 
     buff = new String(""); 
     buffering = true; 
    } 
} 

@Override 
public void characters(char ch[], int start, int length) { 
    if(buffering) { 
     buff=new String(ch, start, length) 
    } 
} 

@Override 
public void endElement(String namespaceURI, String localName, String qName) 
throws SAXException { 
    if (localName.equals("blah")) { 
     buffering = false; 
     String content = buff.toString(); 

     // Do something with the full text content that we've just parsed 
    } 
} 

回答

8
@Override 
public void startElement(String namespaceURI, String localName, String qName, 
     Attributes atts) throws SAXException { 
    if (localName.equals("xml")) { 
      System.out.println("The value of attribute 'att' is: " + atts.getValue("att")); 
    } 
} 
+0

感谢很多:) – Gaurav

+0

你让我一天:) –

+0

@fernando Miguelez我有同样的问题,但我使用XMLParser而不是SAXParser,你能给我一个解决方法吗? –