使用Java DOM设置不带前缀的属性
使用JavaDOM,我试图为属性名之前没有名称空间的元素设置属性 所以,我需要的是:使用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
<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);