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”不能包含字符“:”。”

请帮我解决问题。

4

1 回答 1

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);
// ...
于 2014-07-13T04:01:51.653 回答