Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java DOM设置不带前缀的属性_Java_Xml_Dom_Namespaces - Fatal编程技术网

使用Java DOM设置不带前缀的属性

使用Java DOM设置不带前缀的属性,java,xml,dom,namespaces,Java,Xml,Dom,Namespaces,使用JavaDOM,我试图为属性名之前没有名称空间的元素设置属性 所以,我需要的是: <documentObject xmlns="http://www.myschema.com"> <element1 attr1="value">foo</element1> </documentObject> 如果我尝试将属性设置为以下element1.setAttribute(“xmlns:attr1”,value)我在属性名之前得到一个前缀(xml

使用JavaDOM,我试图为属性名之前没有名称空间的元素设置属性

所以,我需要的是:

<documentObject xmlns="http://www.myschema.com">
    <element1 attr1="value">foo</element1>
</documentObject>
如果我尝试将属性设置为以下
element1.setAttribute(“xmlns:attr1”,value)我在属性名之前得到一个前缀(xmlns),如下所示:

<element1 xmlns:attr1="value">foo</element1>

下面的代码将产生输出

<?xml version="1.0" encoding="UTF-8"?>
<documentObject xmlns="http://www.myschema.com">
    <element1 attr1="value">foo</element1>
</documentObject>

让我们再看看您想要的输出:

<documentObject xmlns="http://www.myschema.com">
    <element1 attr1="value">foo</element1>
</documentObject>

当然,这一切都取决于所需的输出是否正确。如果确实
attr1
必须在名称空间中,则所需的输出不正确。

在这种情况下,我得到的结果是以下格式的:myschema.com“>fooI已添加完整的示例。请尝试!
<?xml version="1.0" encoding="UTF-8"?>
<documentObject xmlns="http://www.myschema.com">
    <element1 attr1="value">foo</element1>
</documentObject>
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class XMLTest {

    public static void main(String[] args) throws ParserConfigurationException, TransformerException {

        DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

        Document doc = docBuilder.newDocument();

        Element element = doc.createElementNS("http://www.myschema.com", "documentObject");
        doc.appendChild(element);

        Element element1 = doc.createElement("element1");
        element.appendChild(element1);

        element1.appendChild(doc.createTextNode("foo"));
        Attr attr = doc.createAttribute("attr1");
        attr.setValue("value");
        element1.setAttributeNode(attr);

        element.appendChild(element1);

        // write the content into xml file
        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        DOMSource source = new DOMSource(doc);
        StreamResult result = new StreamResult(new File("testfile.xml"));
        transformer.transform(source, result);
        System.out.println("File saved!");
    }
}
<documentObject xmlns="http://www.myschema.com">
    <element1 attr1="value">foo</element1>
</documentObject>
element1.setAttribute("attr1", value);