Xml JDOM解析器和名称空间如何获取干净的内容
我的xml: 每个元素都有名称空间。为什么会这样?我不想要命名空间。。。我想要与xml示例中相同的输出,如Xml JDOM解析器和名称空间如何获取干净的内容,xml,jdom,Xml,Jdom,我的xml: 每个元素都有名称空间。为什么会这样?我不想要命名空间。。。我想要与xml示例中相同的输出,如 <firstname xmlns="http://www.xx.com/xx">yong</firstname> <lastname xmlns="http://www.xx.com/xx">mook kim</lastname> <nickname xmlns="http://www.
<firstname xmlns="http://www.xx.com/xx">yong</firstname>
<lastname xmlns="http://www.xx.com/xx">mook kim</lastname>
<nickname xmlns="http://www.xx.com/xx">mkyong</nickname>
<salary xmlns="http://www.xx.com/xx">100000</salary>
永
木金
mkyong
100000
您得到了正确的结果。所有这些元素都是从名称空间的http://www.xx.com/xx因此,当您输出元素时,他们保留它是有道理的。请注意,在XML中,默认名称空间(不带前缀的名称空间)应用于所有作为子体但自身未重新定义默认名称空间的元素 如果这似乎是一个复杂的解释,请尝试名称空间规范:或名称空间教程: 如果不希望在这些元素上具有名称空间,可以使用以下方法删除它们:
<firstname>yong</firstname>
<lastname>mook kim</lastname>
<nickname>mkyong</nickname>
<salary>100000</salary>
Rolf您必须理解XML(以文本形式)和节点树之间的区别。在树中,没有继承的或默认的名称空间:每个元素节点都有自己的名称空间,而与它的祖先的名称空间无关。要实现所需的功能,必须更改所有元素节点的名称空间。在您的例子中,遍历getContent()返回的列表,并将每个元素的名称空间设置为NO_namespace。我尝试了这段代码,但名称空间仍然存在。当我使用字符串xml=sb.toString()时;我仍然看到名称空间。。。
<firstname>yong</firstname>
<lastname>mook kim</lastname>
<nickname>mkyong</nickname>
<salary>100000</salary>
node.setNamespace(Namespace.NO_NAMESPACE);