报错

原因
解析XML文档时缺少了对xmi这个命名空间的声明,没有声明,所以不能直接用。
解决
方式一:单独注册,使用前注册
在解析XML之前,先声明和注册xmi命名空间。可以使用Namespace类来定义命名空间,并使用NamespaceStack类来管理命名空间的声明。
解析xml时
// 设置NamespaceStack对象到SAXReader中
reader.getDocumentFactory().setNamespaceStack(namespaceStack);
// 创建一个NamespaceStack对象来管理命名空间
NamespaceStack namespaceStack = new NamespaceStack();
// 声明和注册xmi命名空间
Namespace xmiNamespace = Namespace.get("xmi", "http://www.omg.org/XMI");
namespaceStack.push(xmiNamespace);
// 设置NamespaceStack对象到SAXReader中
reader.getDocumentFactory().setNamespaceStack(namespaceStack);
Java对象转化xml时
Element element= DocumentHelper.createElement("element");
// 创建一个xmi命名空间
Namespace xmiNamespace = Namespace.get("xmi", "http://www.omg.org/XMI");
// 添加xmi命名空间声明
element.addNamespaceDeclaration(xmiNamespace);
// 在这里进行你的XML生成操作
// 将根元素添加到文档中
elementParent.add(element);
方式二:直接在根上声明
Element root = DocumentHelper.createElement("xmi:XMI");
root.addNamespace("xmi", "http://www.example.com/xmi");
Document document = DocumentHelper.createDocument(root);
其他
命名空间对应地址
soap12:"http://www.w3.org/2003/05/soap-envelope"
xf:"http://www.w3.org/2002/xforms"
xi:"http://www.w3.org/2001/XInclude"
xlink:"http://www.w3.org/1999/xlink"
xsl:"ttp://www.w3.org/1999/XSL/Transform"
xs:"http://www.w3.org/2001/XMLSchema"
xhtml:"http://www.w3.org/1999/xhtml"
xml:"http://www.w3.org/XML/1998/namespace"

文章讲述了在解析XML文档时遇到xmi命名空间缺失的问题,提供了两种解决方案:一是解析前单独注册xmi命名空间,二是直接在根元素上声明。同时列举了一些常见的命名空间及其对应地址。

4717

被折叠的 条评论
为什么被折叠?



