我想从XML中提取xsi:type属性值,如下所示
<interface xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="SerialInterface">
我想在这里提取xsi:type属性值,即 SerialInterface 。
我试图使用node.getAttributeValue
,但这并不完全正常
答案 0 :(得分:0)
我会使用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