java - 使用 jdom 设置命名空间

标签 java xml-namespaces jdom

我想在 xml 中使用这种格式:

<ns2: test xmlns="url" xmlns:ns2="url2" xmlns:ns3="url3">
....
</ns2: test>

我正在使用以下代码:

    Namespace ns= Namespace.getNamespace("url");
    Namespace ns2 = Namespace.getNamespace("ns2", "url2");
    Namespace ns3= Namespace.getNamespace("ns3", "url3");

    SAXBuilder vDocBuilder = new SAXBuilder();
    Document vDocument = vDocBuilder.build(File);

    System.out.println("Root element " + vDocument.getRootElement().getName());

    org.jdom.Element test = new org.jdom.Element("test", ns);
    vDocument.setRootElement(test);
    vNewRootElement.addNamespaceDeclaration(ns2);
    vNewRootElement.addNamespaceDeclaration(ns3);

如果我设置命名空间:

    vNewRootElement.setNamespace(ns3);

然后我明白了

    <ns2: test xmlns:ns2="url2" xmlns:ns3="url3"> ... </ns2: test> 
without the default namespace xmlns="url".

谁能告诉我为什么它不起作用,有没有办法解决这个问题?

谢谢哈儿

最佳答案

以下输出(到System.out)

<?xml version="1.0" encoding="UTF-8"?>
<ns2:test xmlns:ns2="url2" xmlns="url" xmlns:ns3="url3">Some text</ns2:test>

import java.io.IOException;
import org.jdom.Document;
import org.jdom.JDOMException;
import org.jdom.Namespace;
import org.jdom.output.XMLOutputter;

public class Test {

    public static void main(String args[]) throws JDOMException, IOException {
        Namespace ns = Namespace.getNamespace("url");
        Namespace ns2 = Namespace.getNamespace("ns2", "url2");
        Namespace ns3 = Namespace.getNamespace("ns3", "url3");


        Document vDocument = new Document();
        org.jdom.Element test = new org.jdom.Element("test", ns2);
        vDocument.setRootElement(test);
        //add "url" default namespace
        test.addNamespaceDeclaration(ns);
        test.addNamespaceDeclaration(ns2);
        test.addNamespaceDeclaration(ns3);
        test.addContent("Some text");
        //dump output to System.out
        XMLOutputter xo = new XMLOutputter();
        xo.output(vDocument, System.out);

    }
}

你需要这条线

   test.addNamespaceDeclaration(ns);

关于java - 使用 jdom 设置命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7085503/

相关文章:

java - 如何使用 JDom 根据 XSD 架构验证 XML 文档

java - 如何使用 Java 将子元素附加到大型 XML 文件?

java - Vaadin 插件无法在 Eclipse (Windows 8.1) 中运行

java - 声明与其定义类型相同的结构变量

python - xml 中的 xpath 命名空间的另一个问题

xml - 使用 XSLT 自动生成 XML 模式

java - 使用 @XmlPath 和命名空间时从 MOXy JAXB 生成的 XML 架构出错

java - 在 java 中导入 .xlsx 文件时出现 OutOfMemoryException

java - XML 文件未使用 jdom 进行更新

java - 如何将值插入到xml中?