2015-12-21 85 views
0

我试图添加前缀到一个标签代表一个特定的命名空间 - 可以看出以下如何创建带有命名空间前缀标签

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); 

不幸的是我的messageParties元素与下面的错误而失败 -

org.w3c.dom.DOMException中:NAMESPACE_ERR:试图创建 或在某种程度上这是不正确关于 命名空间改变的对象。

你应该如何给标签加正确的名称空间定义?事件setPrefix方法抛出相同的错误。

感谢

回答

0

我不认为你可以决定前缀的名字空间元素而生成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。