【问题标题】:How to set multiple Namespace, one of them without prefix (JDom)如何设置多个命名空间,其中一个不带前缀(JDom)
【发布时间】:2016-02-23 10:51:06
【问题描述】:

我需要设置一个命名空间,希望有人能帮帮我。

这就是我需要的:

<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

我尝试这样做:

            Namespace ns1 = Namespace.getNamespace("urn:iso:std:iso:20022:tech:xsd:pain.001.001.03");
        Namespace ns2 = Namespace.getNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
        Element root = new Element("Document");
        root.addNamespaceDeclaration(ns2);
        root.addNamespaceDeclaration(ns1);

但我得到了这个例外:

命名空间 xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" 无法作为命名空间添加到“文档”:命名空间前缀 "" 与元素命名空间前缀冲突

谢谢

【问题讨论】:

    标签: java xml namespaces jdom


    【解决方案1】:

    使用

    Namespace ns1 = Namespace.getNamespace("urn:iso:std:iso:20022:tech:xsd:pain.001.001.03");
    Namespace ns2 = Namespace.getNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
    Element root = new Element("Document", ns1);
    root.addNamespaceDeclaration(ns2);
    

    由于您已经定义了默认命名空间,因此您必须在创建Element 时使用它。否则 JDOM 会抱怨该元素不在命名空间中,同时具有默认命名空间声明。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-03
      • 2014-03-13
      相关资源
      最近更新 更多