介绍addAttribute和addNamepsace:
addAttribute
方法
addAttribute
方法用于给XML元素添加属性。属性(Attributes)是元素的修饰符,提供了关于元素的额外信息,并且位于元素的开始标签中。属性通常用于指定元素的行为或样式,而不是定义元素的层次结构。
例如,如果想要给一个kml
元素指定一个版本号,会使用addAttribute
方法:
Element kml = document.addElement("kml");
kml.addAttribute("version", "2.0");
这会在kml
元素中添加一个version
属性:
<kml version="2.0"></kml>
addNamespace
方法
addNamespace
方法用于给XML元素声明一个命名空间(Namespace)。命名空间用于区分相同名字的元素或属性,但属于不同的XML词汇表或XML语言的情况。在XML中,命名空间是非常重要的,因为它们允许文档中包含多个具有相同标签名的元素,而这些元素来自不同的上下文。
当使用带有命名空间的XML时,需要声明这些命名空间,然后使用前缀来引用它们你可能会这样声明命名空间:
Element kml = document.addElement("kml");
kml.addNamespace("wpml", "http://www.dji.com/wpmz/1.0.2");
这会在kml
元素中声明一个wpml
命名空间,并且你可以在该元素的子元素中使用wpml
前缀来引用这个命名空间:
<kml xmlns:wpml="http://www.dji.com/wpmz/1.0.2">
<wpml:someElement></wpml:someElement>
</kml>
在这个例子中,wpml
是一个前缀,它关联到了一个具体的URI(http://www.dji.com/wpmz/1.0.2
),这个URI定义了wpml
前缀下所有元素的词汇表。
总结
addAttribute
用于给元素添加属性,属性是关于元素的额外信息,通常用于描述元素的行为或样式。addNamespace
用于声明元素的命名空间,命名空间用于区分不同XML词汇表中的同名元素或属性
遇错代码:
// 创建document对象
Document document = DocumentHelper.createDocument();
// 创建根节点kml,并添加命名空间
Element kml = document.addElement("kml","http://www.opengis.net/kml/2.2")
.addAttribute("xmlns:wpml", "http://www.dji.com/wpmz/1.0.2");
// -----------------创建信息-----------------
// 创建Document节点
Element documentElement = kml.addElement("Document");
// 添加作者信息
Element author = documentElement.addElement("wpml:author").addText("Ian");
// 添加创建时间
Element createTime = documentElement.addElement("wpml:createTime").addText("1637600807044");// 用实时时间戳替换
// 添加任务信息
Element updateTime = documentElement.addElement("wpml:updateTime").addText("1637600875837");// 用实时时间戳替换
修改后代码:
// 创建根节点kml,并添加命名空间
Element kml = document.addElement("kml","http://www.opengis.net/kml/2.2");
kml.addAttribute("xmlns:wpml", "http://www.dji.com/wpmz/1.0.2");
// 创建Document节点
Element documentElement = kml.addElement("Document");
// 使用命名空间创建元素
Namespace wpmlNameSpace = new Namespace("wpml", "http://www.dji.com/wpmz/1.0.2");
// 添加作者信息
Element author = documentElement.addElement(new QName("author",wpmlNameSpace)).addText("Ian");
// 添加创建时间
Element createTime = documentElement.addElement(new QName("createTime",wpmlNameSpace)).addText("1637600807044");// 用实时时间戳替换
// 添加任务信息
Element updateTime = documentElement.addElement(new QName("updateTime",wpmlNameSpace)).addText("1637600875837");// 用实时时间戳替换
生成xml:
我们可以注意到对于kml无需添加命名空间xmlns,默认即是xmlns只需要添加对应url即可,不然导致子节点document出现xmlns=""问题,并添加xmls:wpml属性,通过新创建的命名空间给author、createtime等子节点添加命名空间来避免报错。