Когда вы читаете XML с помощью анализатора SAX, вы реализуете своего рода ContentHandler (см. http://docs.oracle.com/javase/7/docs/api/org/xml/sax/ContentHandler.html). В вашем ContentHandler метод startElement вызывается, когда парсер входит в «правило1» и «правило2». Один параметр startElement - это атрибуты, которые в основном представляют собой карту имен атрибутов («имя» в вашем примере) к соответствующим значениям.
Некоторые фрагмент кода будет выглядеть следующим образом:
// Handle XML SAX parser events.
private ContentHandler contentHandler = new ContentHandler() {
public void startDocument() throws SAXException {...}
public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException {
cdata.setLength(0);
if(atts == null) return;
// Write out attributes as new rows
for(int i = 0; i < atts.getLength(); i++) {
System.out.println(atts.getLocalName(i) + ": " + atts.getValue(i));
}
}
public void characters(char[] ch, int start, int length) throws SAXException {...}
public void endElement(String uri, String localName, String qName) throws SAXException {...}
// All other events are ignored
public void endDocument() throws SAXException {}
public void endPrefixMapping(String prefix) throws SAXException {}
public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException {}
public void processingInstruction(String target, String data) throws SAXException {}
public void setDocumentLocator(Locator locator) {}
public void skippedEntity(String name) throws SAXException {}
public void startPrefixMapping(String prefix, String uri) throws SAXException {}
};
Спасибо за быстрый ответ, так и в других словах atts.localName (0) равен "а" и atts.localName (1) равно «б «? –
нет, метод startElement будет вызываться дважды парсером. Один раз для элемента «rule1» и второй раз для «rule2». Оба вызова будут иметь один атрибут в параметре Атрибуты. С atts.getLocalName (0) вы получаете в обоих случаях «имя», которое является именем вашего атрибута. С atts.getValue (0) вы получите «a» в вызове startElement для «rule1» и «b» для второго вызова. – jboi