0

我想从 XML 中提取 xsi:type 属性值,如下所示

<interface xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="SerialInterface">

我想在这里提取 xsi:type 属性值,即SerialInterface

我试图使用node.getAttributeValue,但这并不完全有效

4

1 回答 1

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
于 2013-05-07T05:38:08.047 回答