【问题标题】:Java: How to build a XML with namespaceJava:如何使用命名空间构建 XML
【发布时间】:2022-01-20 23:48:14
【问题描述】:

我尝试创建一个带有命名空间的 XML DOM - 但不知道该怎么做。

import java.io.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import org.w3c.dom.*;

public class App 
{
    public static void main (String args []) throws Exception
    {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance ();
        DocumentBuilder db = dbf.newDocumentBuilder ();
        Document doc = db.newDocument ();
            
        Element env = doc.createElement ("Env");
        env.setAttributeNS ("aaa", "bbc", "ccc");
        doc.appendChild (env);
            
        TransformerFactory tf = TransformerFactory.newInstance ();
        Transformer tr = tf.newTransformer ();
        StringWriter sw = new StringWriter ();
        tr.transform (new DOMSource (doc), new StreamResult (sw));
        System.out.println (sw.toString ());
    }
}

结果是

<?xml version="1.0" encoding="UTF-8" standalone="no"?><Env xmlns:ns0="aaa" ns0:bbb="ccc"/>

但我想要的是

<?xml version="1.0" encoding="UTF-8" standalone="no"?><Env xmlns:aaa="bbb"/>

我怎样才能得到它?

【问题讨论】:

  • 必须是 DOM 吗? JDOM2 和 XOM 等其他树模型使这更容易。

标签: java xml dom


【解决方案1】:

使用setAttribute()直接设置属性输出你想要的结果。

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance ();

    // You might also want to consider setting your 
    // DocumentBuilderFactory to be namespace aware by using
    dbf.setNamespaceAware(true);

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

    Element env = doc.createElement ("Env");
    //   env.setAttributeNS ("aaa", "bbc", "ccc");
    env.setAttribute("xmlns:aaa", "bbb");
    doc.appendChild (env);

    TransformerFactory tf = TransformerFactory.newInstance ();
    Transformer tr = tf.newTransformer ();
    StringWriter sw = new StringWriter ();
    tr.transform (new DOMSource (doc), new StreamResult (sw));
    System.out.println (sw.toString ());

输出:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><Env xmlns:aaa="bbb"/>

【讨论】:

    猜你喜欢
    • 2011-03-17
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 2016-04-24
    • 1970-01-01
    • 2011-06-07
    • 1970-01-01
    相关资源
    最近更新 更多