我會用StAX的。
XMLStreamReader xr = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(s));
xr.next();
String type = xr.getAttributeValue(0);
請注意,我使用了屬性索引0.這是因爲XML解析器不會返回xmlns:xsi attr。
這是基於SAX版本
String s = "<interface xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"SerialInterface\" />";
final StringBuilder type = new StringBuilder();
SAXParserFactory.newInstance().newSAXParser()
.parse(new ByteArrayInputStream(s.getBytes()), new DefaultHandler() {
@Override
public void startElement(String uri, String localName, String qName,
Attributes attrs) throws SAXException {
if (type.length() == 0) {
type.append(attrs.getValue("xsi:type"));
}
}
});
System.out.println(type);
輸出
SerialInterface
我必須使用SAX和我有一個 「元素」 類型說節點。我可以使用像node.getAttributeValue()來獲取? – user1356042 2013-05-07 05:51:02
你確定你需要SAX而不是DOM嗎? – 2013-05-07 05:58:26
是的,剩下的部分是用SAX完成的。所以現在不能改變這一點。 – user1356042 2013-05-07 06:02:13