用dom4j操作写XML文件,标签中含有冒号,会报 org.dom4j.IllegalAddException: No such namespace prefix: *** is in scope on: org.dom4j.tree.DefaultElement错误,大致意思就是说,冒号前面的内容是未定义的命名空间,那么我们就帮它定义一下,问题即可解决,看下面例子:

这是我需要生成的XML,标签包含 ofd:

<?xml version="1.0" encoding="UTF-8"?>
<ofd:Signature xmlns:ofd="http://www.ofdspec.org/2016">
<ofd:SignedInfo>
<ofd:Provider ProviderName="Eseal" Company="XXX" Version="1.0"/>
<ofd:SignatureMethod>123456789</ofd:SignatureMethod>
<ofd:SignatureDataTime>988746454656</ofd:SignatureDataTime>
<ofd:Reference FileRef="文件地址">
<ofd:CheckValue>qqqqqqqqqqqqqqqqqqqqq</ofd:CheckValue>
</ofd:Reference>
<ofd:StampAmot PageRef="1" ID="index" Boundary="10.0 20.0 30.0 40.0"/>
<ofd:Seal>
<ofd:BaseLoc>Seal.esl</ofd:BaseLoc>
</ofd:Seal>
</ofd:SignedInfo>
<ofd:SignedValue>SignedValue.dat</ofd:SignedValue>
</ofd:Signature>

代码操作的时候,在根节点用

addNamespace("name","dnsURL")

添加命名空间即可,代码比较简单,不做赘述:

import java.io.FileWriter;
import java.io.IOException; import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter; public class generateXMLTest{ public static void main(String[] args) {
generateSignature("E:\\test.xml");
} public static void generateSignature(String fileAddress) {
FileWriter out = null;
try {
out = new FileWriter(fileAddress);
createDocument().write(out);
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter writer = new XMLWriter(System.out, format);//设置XML编码
writer.write(createDocument());
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} public static Document createDocument() {
Document document = DocumentHelper.createDocument(); Element root = document.addElement("ofd:Signature")
.addAttribute("xmlns:ofd","http://www.ofdspec.org/2016").addNamespace("ofd", "http://www.ofdspec.org/2016");//在此为ofd:添加命名空间 Element SignedInfo = root.addElement("ofd:SignedInfo"); Element Provider = SignedInfo.addElement("ofd:Provider")
.addAttribute("ProviderName", "Eseal")
.addAttribute("Company", "XXX")
.addAttribute("Version", "1.0"); Element SignatureMethod = SignedInfo.addElement("ofd:SignatureMethod");
SignatureMethod.setText("123456789");
Element SignatureDataTime = SignedInfo.addElement("ofd:SignatureDataTime");
SignatureDataTime.setText("988746454656");
Element Reference = SignedInfo.addElement("ofd:Reference")
.addAttribute("FileRef", "文件地址");
Element CheckValue = Reference.addElement("ofd:CheckValue");
CheckValue.setText("qqqqqqqqqqqqqqqqqqqqq");
Element StampAmot = SignedInfo.addElement("ofd:StampAmot")
.addAttribute("PageRef", "1")
.addAttribute("ID", "index")
.addAttribute("Boundary", "10.0 20.0 30.0 40.0");
Element BaseLoc = SignedInfo.addElement("ofd:Seal").addElement("ofd:BaseLoc");
BaseLoc.setText("Seal.esl");
Element SignedValue = root.addElement("ofd:SignedValue");
SignedValue.setText("SignedValue.dat");
return document;
} }

org.dom4j.IllegalAddException: No such namespace prefix: *** is in scope on: org.dom4j.tree.DefaultElement (dom4j写入XML文件,标签中带【:】(冒号)解决办法)的更多相关文章

  1. DOM、SAX、JDOM、DOM4J以及PULL在XML文件解析中的工作原理以及优缺点对比

    1. DOM(Document Object Model)文档对象模型1. DOM是W3C指定的一套规范标准,核心是按树形结构处理数据,DOM解析器读入XML文件并在内存中建立一个结构一模一样的&qu ...

  2. Java进阶(二十七)使用Dom4j解析XML文件

    使用Dom4j解析XML文件 写在前面的话 由于论文实验要求,需要实现操作XML文档,为此想到了dom4j这个工具,使用之后深感受益.在此分享给大家,以此共勉. 注:本文转载自http://blog. ...

  3. 使用dom4j 解析xml文件

    //使用dom4j 解析xml文件,升级版,dom4j是对dom的封装 //重点 package com.offcn.utils; import java.io.File; import java.i ...

  4. dom4j 解析XML文件

    <?xml version="1.0" encoding="UTF-8"?> <!-- 手机的根节点 --> <Phones> ...

  5. dom4j: 生成的XML文件根节点 xmlns="" 的问题

    使用dom4j写入XML文件时,写入完毕后发现root element中没有 xmlns,也即是没有命名空间. 正确的写法如下: Document document = DocumentHelper. ...

  6. 【XML】利用Dom4j读取XML文档以及写入XML文档

    Dom4j简介 dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,它的性能 ...

  7. 错误“Unexpected namespace prefix "xmlns" found for tag LinearLayout”的解决方法(转)

    (转自:http://blog.csdn.net/bombzhang/article/details/12676789) 有一次升级开发工具后发现xml脚本出现错误“Unexpected namesp ...

  8. Unexpected namespace prefix "xmlns" found for tag Linear Layout

    原文地址http://blog.csdn.net/taxuexumei/article/details/41523419 今天遇到的问题,,,保存到博客里,下回遇到找博客就行了,,,,,, 今天在制作 ...

  9. 错误“Unexpected namespace prefix "xmlns" found for tag LinearLayout”的解决方法

    编写布局代码时发现xml脚本出现错误“Unexpected namespace prefix "xmlns" found for tag LinearLayout”,原来是一个na ...

随机推荐

  1. 把所有界面的状态栏字体颜色设置为白色--iOS开发系列---项目中成长的知识一

    第一步: 在info.plist中 View controller-based status bar appearance这个属性设置为 View controller-based status ba ...

  2. 详解Mac睡眠模式设置

    详解Mac睡眠模式设置 原文链接:http://www.insanelymac.com/forum/index.php?showtopic=281945 需要说明的是,首先这篇文章是针对已经能够成功睡 ...

  3. 【线段树 细节题】bzoj1067: [SCOI2007]降雨量

    主要还是细节分析:线段树作为工具 Description 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”.它的含义是X年的降雨量不超过Y年,且对于任意Y<Z<X,Z年的降雨量严格小 ...

  4. 基于ubuntu 14.04 kvm虚拟化部署

    1. 宿主机环境(dell备份服务器) Ubuntu 14.04 LTS 64位 内存:16G 硬盘:2T 2. 确认CPU是否支持硬件虚拟化 root@shwilling:~# egrep -o ' ...

  5. systemverilog之OOP

    what is oop terminology an example class default methods for classes static attibute assigment and c ...

  6. 第一章 pyhton基础

    一 .pyhton2与python3的区别 在pyhton2中,其中编码默认使用的是ascii编码,输出格式为print"xxx",输入为raw_input(“请输入”),在整型中 ...

  7. 如何删除SQL Server 2014连接到服务器中的服务器名称

    查看了网上的一些方法,均是以前版本的处理方法,不过原理都是删除"SqlStudio.bin",通过“Everything”搜索SqlStudio.bin,位置是: C:\Users ...

  8. 安装mongodb卡顿

    "3.6下载安装会卡死."的原因在于,默认安装是包含mongodb compass,这个包的,这个包大约有180MB,下载很慢,导致所谓的的”卡死“. 如果你选用自定义安装的并且不 ...

  9. POJ 2486 树形背包DP Apple Tree

    设d(u, j, 0)表示在以u为根的子树中至多走k步并且最终返回u,能吃到的最多的苹果. 则有状态转移方程: #include <iostream> #include <cstdi ...

  10. Java-从一个字符串获取子字符串

    substring函数 package com.tj; public class MyClass implements Cloneable { public static void main(Stri ...