我必须读取具有前缀但未定义名称空间的XML
例如
<department:employee xsi:schema="www.abcd.com abcd.xsd" >
<emp:name>
John
</emp:name>
</department:employee>
我在java中使用Xpath
是否可以创建动态命名空间并将其与文档对象
绑定此致
答案 0 :(得分:1)
如果您想使用DOM API来阅读输入,则必须先修复它。
正则表达式可以提供帮助。编写执行以下操作的函数:
"xmlns:([^\\s:]+)="
以查找所有已声明的前缀,并将其存储在地图中。"<([^\\s:]+):"
以查找所有使用的名称空间前缀。对于每个剩余的前缀,请用
替换文档中的第一个"[^\\s?-]>"
" xmlns:" + prefix + "='http://tempuri.org/" + prefix + "'$0"
department
的名称空间URI现在应为http://tempuri.org/department
等。正则表达式是近似值。 XML名称空间前缀中允许的字符规则为a bit more complicated than that。所以[^\s:]+
不是真正的交易,但对你的情况来说可能已经足够了。