You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XMLStreamWriter writeAttribute含冒号属性名抛异常,求正确写法

XML命名空间属性写入报错的正确解决方法

直接使用writer.writeAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance")会触发报错,原因是XML中属性名里的冒号是命名空间前缀的分隔符,不能将xmlns:xsi当作普通属性名传递,必须通过XML API的专门方法处理命名空间绑定。

以下是两种常见XML写入工具的正确写法:

1. 使用StAX的XMLStreamWriter

调用带命名空间参数的重载方法,明确传递命名空间相关信息:

// 方式一:先设置前缀映射,自动生成命名空间属性
writer.setPrefix("xsi", "http://www.w3.org/2001/XMLSchema-instance");
// 方式二:直接写入命名空间属性
writer.writeAttribute(
    "http://www.w3.org/2000/xmlns/", 
    "xsi", 
    "http://www.w3.org/2001/XMLSchema-instance"
);

注:第一个参数是xmlns自身的标准命名空间URI,第二个是前缀xsi,第三个是目标命名空间的URI。

2. 使用JDOM的Element

通过Namespace类声明命名空间,输出时会自动生成对应属性:

Namespace xsiNs = Namespace.getNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
element.addNamespaceDeclaration(xsiNs);

无论哪种方式,最终都会输出符合要求的xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"属性,同时避免非法字符报错。

内容的提问来源于stack exchange,提问作者Arun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 04:45:29