我正在尝试为标记添加前缀以表示特定的命名空间 - 如下所示
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 :(得分: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。