我有这个 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
。那么我如何获得节点的前缀呢?
最佳答案
尝试启用 namespace 支持:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder db = dbf.newDocumentBuilder();
来自JavaDoc对于 setNamespaceAware
:
Specifies that the parser produced by this code will provide support for XML namespaces. By default the value of this is set to
false
关于java - 如何获取xml的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10599566/