2013-05-07 16 views
0

類型的屬性值我想提取的XSI:從XML類型的屬性值,如下需要提取XSI:使用SAX解析器

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

我想提取的xsi:type屬性值即SerialInterface這裏。

我試圖用node.getAttributeValue但是這不完全是工作

回答

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 
+0

我必須使用SAX和我有一個 「元素」 類型說節點。我可以使用像node.getAttributeValue()來獲取? – user1356042 2013-05-07 05:51:02

+0

你確定你需要SAX而不是DOM嗎? – 2013-05-07 05:58:26

+0

是的,剩下的部分是用SAX完成的。所以現在不能改變這一點。 – user1356042 2013-05-07 06:02:13