如何获取xml的命名空间

时间:2012-05-15 11:15:46

标签: java 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();

当想获得没有命名空间的元素的名称时所以我想调用带有前缀的元素名称的子串

node.getNodeName()给了我 data:VyuzitiPoskytnuti node.getNamespaceURI()node.getPrefix()只给我 null 。那我怎么能得到节点的前缀?

1 个答案:

答案 0 :(得分:5)

尝试启用名称空间支持:

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

来自setNamespaceAware的{​​{3}}:

  

指定此代码生成的解析器将提供对XML命名空间的支持。默认情况下,此值设置为false