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