当前位置: 首页 > article >正文

Java使用dom4j生成kml(xml)文件遇到No such namespace prefix: xxx is in scope on:问题解决

介绍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&#34;)  
                                .addAttribute("xmlns:wpml", "http://www.dji.com/wpmz/1.0.2&#34;);  
            // -----------------创建信息-----------------
                // 创建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等子节点添加命名空间来避免报错。


http://www.kler.cn/news/366443.html

相关文章:

  • shodan1,shodan简介和kali下的使用
  • WPF+MVVM案例实战(六)- 自定义分页控件实现
  • 比例数据可视化(Python实现板块层级图绘制)——Instacart Market Basket Analysis
  • 【大数据学习 | Zookeeper】Zookeeper服务端与客户端的工作流程
  • 钉钉录播抓取视频
  • 【华为路由】OSPF多区域配置
  • leetcode:写出排序的过程,给出2个有序的子序列,如何将已有序的子序列合并,得到完全有序的序列,复杂度越低越好
  • Muggle OCR 是一个高效的本地OCR(光学字符识别)模块
  • 基于单片机的搬运机器人控制系统
  • 掌握Rust所有权:理解所有权转移的概念
  • Java面试泛型相关知识点、面试题(含答案)
  • 【5.2】指针算法-双指针求盛最多水的容器
  • 如何对群辉docker进行简单更新升级
  • MATLAB中的fftshift函数
  • kubeadm快速自动化部署k8s集群
  • (三)第一个Qt程序“Qt版本的HelloWorld”
  • jmeter录制接口
  • 【初阶数据结构】计数排序 :感受非比较排序的魅力
  • Flink CDC系列之:学习理解核心概念——Data Pipeline
  • MySQL 二进制和中继日志管理
  • STM32L031F6P6开发环境搭建
  • 隨筆 20241023 Kafka 的幂等性与分区顺序性探讨
  • excel斜线表头
  • python爬虫:实例讲解xpatch的基本使用
  • 人工智能在自然语言处理(NLP)中的应用
  • Redis面试题扩展