(оригинальный ответ)
Создайте Digester
для шаблона "furniture/*"
с простым Rule
, который принимает второй параметр для каждого вызова метода begin и помещает его в коллекцию по вашему выбору (список, чтобы получить их все, установить, чтобы получить только все уникальные имена).
(редактировать)
Поцарапайте это, это немного сложнее.
Это работает:
public class App
{
final static Rule printRule = new Rule() {
public void begin(String namespace, String name,
Attributes attributes) throws Exception {
System.out.println(name);
}
};
public static void main( String[] args ) throws IOException, SAXException
{
InputStream instr = App.class.getResourceAsStream("/sample.xml");
Digester dig = new Digester();
dig.setRules(new RulesBase(){
public List<Rule> match(String namespaceURI, String pattern) {
return Arrays.asList(printRule);
}
});
dig.parse(instr);
}
}
В этом конкретном примере будут напечатаны все имена элементов, включая корневой элемент furniture
. Я оставлю вам возможность настроить метод match()
в соответствии с вашими потребностями.