2012-05-15 70 views
1

的命名空間我有這樣的XML:如何獲得XML

InputStream is = new ByteArrayInputStream(
     "<data:RobCtiAifoData xmlns:data=\"urn:cz:isvs:rob:schemas:RobDotazyData:v1\" xmlns:reg=\"urn:cz:isvs:reg:schemas:RegTypy:v1\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:cz:isvs:rob:schemas:RobUnivDotazy:v1\"><data:Aifo a=\"b\">1</data:Aifo><data:VyuzitiPoskytnuti>vyuziti</data:VyuzitiPoskytnuti> </data:RobCtiAifoData>" 
       .getBytes()); 

// InputStream is = new ByteArrayInputStream(xml.getBytes()); 
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
DocumentBuilder db = dbf.newDocumentBuilder(); 
Document document = db.parse(is); 
Node node = document.getDocumentElement(); 

時想獲得無空間元素的名稱,所以我想元素的名稱呼子withou前綴

node.getNodeName()給我data:VyuzitiPoskytnutinode.getNamespaceURI()node.getPrefix()給我只是null。那麼我怎樣才能得到節點的前綴?

+3

「當想獲得沒有名稱空間的元素名稱,所以我想調用元素名稱的子字符串」 - 這完全是不可理解的。 – skaffman

+0

也許只是爲你 – hudi

回答

5

嘗試啓用命名空間的支持:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
dbf.setNamespaceAware(true); 
DocumentBuilder db = dbf.newDocumentBuilder(); 

JavaDocsetNamespaceAware

指定由此代碼生成的解析器將提供對XML名稱空間的支持。默認情況下,這個值被設置爲false

+0

thx很多工作 – hudi