2012-10-16 45 views
2

即时通讯使用DOM创建XML文件,我不能写标签 属性像下面大教堂设置元素错误

<m:FC_TargetPath="SyndicationUpdated" m:FC_KeepInContent="false" rt:filterable="false"> 

当我设置的属性我的名字和值成功,但与m:rt:前缀我得到一个异常。任何想法如何我可以处理它?

这是即时通讯使用

ent.setAttribute("m:FC_TargetPath", "SyndicationUpdated"); 

的例外是

'Namespace for prefix 'm' has not been declared. 
+0

“我得到了错误:” 我们不能斗志它是什么。 – kosa

+0

确保命名空间是在m和rt的xml文档中声明的?你得到的错误是什么? – Pepto

+0

修辞问题:你是否至少试图在互联网上寻找错误? – Tomalak

回答

0

样品下面的程序:

import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.transform.TransformerFactory; 
import javax.xml.transform.dom.DOMSource; 
import javax.xml.transform.stream.StreamResult; 

import org.w3c.dom.Document; 
import org.w3c.dom.Element; 

public class Dom 
{ 
    public static void main(String[] args) throws Throwable 
    { 
     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
     dbf.setNamespaceAware(true); 

     DocumentBuilder db = dbf.newDocumentBuilder(); 
     Document doc = db.newDocument(); 

     Element root = doc.createElement("root"); 
     root.setAttribute("xmlns:m" , "http://www.lfinance.fr/blog-rachat-credits"); 
     root.setAttribute("xmlns:rt", "http://www.lfinance.fr/forum-rachat-credits"); 
     doc.appendChild(root); 

     Element elt = doc.createElement("simple"); 
     elt.setAttribute("m:FC_TargetPath" , "false"); 
     elt.setAttribute("m:FC_KeepInContent", "false"); 
     elt.setAttribute("rt:filterable"  , "false"); 

     root.appendChild(doc.createTextNode("\n\t")); 
     root.appendChild(elt); 
     root.appendChild(doc.createTextNode("\n")); 
     TransformerFactory.newInstance().newTransformer().transform(
     new DOMSource(doc), 
     new StreamResult(System.out)); 
    } 
} 

输出:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<root 
    xmlns:m="http://www.lfinance.fr/blog-rachat-credits" 
    xmlns:rt="http://www.lfinance.fr/forum-rachat-credits"> 
    <simple 
     m:FC_KeepInContent="false" 
     m:FC_TargetPath="false" 
     rt:filterable="false" /> 
</root> 
0

要设置在您需要使用setAttributeNS代替setAttribute命名空间属性的代码,传递适当的名称空间URI。