如何通过包含名称空间信息来创建XML元素?

时间:2014-07-13 03:45:09

标签: java xml jdom jdom-2

我试图通过将名称空间信息作为其属性来创建XML元素。我的代码如下,

Element root = new Element("APC_DDF");
root.setAttribute("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance");
root.setAttribute("xsi:noNamespaceSchemaLocation","http://localhost/ddf_schema/apc_ddf_1_6.xsd");
root.setAttribute("ddfid", this.dataHolder.getDDFId());
root.setAttribute("ddfname", this.dataHolder.getDDFName());
root.setAttribute("ddfversion", "1");
root.setAttribute("canremove", "yes");

由于某种原因我收到以下错误,

  

“线程中的异常”AWT-EventQueue-0“org.jdom2.IllegalNameException:名称”xmlns:xsi“对于JDOM / XML属性不合法:XML名称”xmlns:xsi“不能包含字符”:“ 。“

请帮我修复。

1 个答案:

答案 0 :(得分:3)

将命名空间声明添加到根元素并使用Namespace对象,而不是在属性名称中包含命名空间前缀:

Namespace xsi = Namespace.getNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
root.addNamespaceDeclaration(xsi);
root.setAttribute("noNamespaceSchemaLocation","http://localhost/ddf_schema/apc_ddf_1_6.xsd", xsi);
// ...