簡體   English   中英

Java DOM默認名稱空間

[英]Java DOM default namespace

我想使用DOM使用默認名稱空間創建XML:

   <?xml version="1.0" encoding="US-ASCII"?>
<test xmlns="example:ns:uri" attr1="XXX" attr2="YYY">
  <el>bla bla</el>
</test>

我有以下

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder db = dbf.newDocumentBuilder();
resultingDOMDocument = db.newDocument();
Element rootElement =
   resultingDOMDocument.createElementNS("example:ns:uri", "test-results-upload");
rootElement.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", "example:ns:uri");
rootElement.setAttributeNS("example:ns:uri", "attr1", "XXX");
rootElement.setAttributeNS("example:ns:uri", "attr2", "YYY");

我正在

<?xml version="1.0" encoding="US-ASCII"?>
<test xmlns="example:ns:uri" ns0:attr1="XXX" xmlns:ns0="example:ns:uri" ns1:attr2="YYY" xmlns:ns1="example:ns:uri">
  <el>bla bla</el>
</test>

我在JDK v6中使用標准DOM API。 我究竟做錯了什么 ? 我想強調-我想使用默認的名稱空間,而我不想使用名稱空間前綴。

我想使用默認的名稱空間,但我不想使用名稱空間前綴

默認的名稱空間聲明( xmlns="..." )僅適用於元素,不適用於屬性。 因此,如果您在名稱空間中創建屬性,則序列化程序必須將該名稱空間URI綁定到前綴,並對該屬性使用該前綴,以便准確地序列化DOM樹,即使相同的URI也已綁定到默認xmlns 無前綴的屬性名稱始終表示沒有名稱空間,因此為了生成

<?xml version="1.0" encoding="US-ASCII"?>
<test xmlns="example:ns:uri" attr1="XXX" attr2="YYY">
  <el>bla bla</el>
</test>

您需要將元素放在名稱空間中

Element rootElement =
   resultingDOMDocument.createElementNS("example:ns:uri", "test-results-upload");

但屬性不是:

rootElement.setAttributeNS(null, "attr1", "XXX");
rootElement.setAttributeNS(null, "attr2", "YYY");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM