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 属性を返さないためです。

これは 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 に答える