Java 如何使用名称空间前缀创建标记

Java 如何使用名称空间前缀创建标记,java,xml,dom,Java,Xml,Dom,我试图在标记中添加一个前缀来表示一个特定的名称空间,如下所示 String envelopePrefix = "omgEnv"; String businessPrefix = "omgBS"; String namespaceURI = "http://www.w3.org/2000/xmlns/"; DocumentBuilderFactory docFactory = DocumentBuilderFactory.n

我试图在标记中添加一个前缀来表示一个特定的名称空间,如下所示

String envelopePrefix = "omgEnv";
            String businessPrefix = "omgBS";
            String namespaceURI = "http://www.w3.org/2000/xmlns/";

            DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

            Document doc = docBuilder.newDocument();
            Element rootElement = doc.createElement("OmgeoMessageContainer");

            rootElement.setAttributeNS(namespaceURI, "xmlns:" + envelopePrefix, "http://www.omgeo.com/schema/v1.0/envelope");
            rootElement.setAttributeNS(namespaceURI, "xmlns:" + businessPrefix, "http://www.omgeo.com/schema/v1.0/BusinessServices");

            doc.appendChild(rootElement);

            Element messageParties = doc.createElementNS(namespaceURI, envelopePrefix + ":MessageParties");
            rootElement.appendChild(messageParties);
很遗憾,my messageParties元素失败,出现以下错误-

org.w3c.dom.DOMException:NAMESPACE\u ERR:试图创建 或者以不正确的方式更改对象 名称空间

如何使用正确的命名空间定义作为标记的前缀?事件setPrefix方法引发相同的错误


谢谢

我认为您不能在生成XML时决定名称空间元素的前缀。我在JavaDocs中没有看到任何这样的选项。要创建具有名称空间的元素,这应该是修改

String namespaceURI = "http://www.w3.org/2000/xmlns/";
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

Document doc = docBuilder.newDocument();
Element rootElement = doc.createElementNS(namespaceURI, "OmgeoMessageContainer");

doc.appendChild(rootElement);
Element messageParties = doc.createElementNS(namespaceURI, "MessageParties");
rootElement.appendChild(messageParties);
这将为名称空间生成带有自动确定前缀的XML