Estoy buscando, por ejemplo, código Java que pueda construir un documento XML que use espacios de nombres. Parece que no puedo encontrar nada usando mi favourite tool normal, así que esperaba que alguien pudiera ayudarme.Creación de un documento XML utilizando espacios de nombres en Java
18
A
Respuesta
14
No estoy seguro de lo que intenta hacer, pero uso jdom para la mayoría de mis xml-issues y admite espacios de nombres (por supuesto).
El código:
Document doc = new Document();
Namespace sNS = Namespace.getNamespace("someNS", "someNamespace");
Element element = new Element("SomeElement", sNS);
element.setAttribute("someKey", "someValue", Namespace.getNamespace("someONS", "someOtherNamespace"));
Element element2 = new Element("SomeElement", Namespace.getNamespace("someNS", "someNamespace"));
element2.setAttribute("someKey", "someValue", sNS);
element.addContent(element2);
doc.addContent(element);
produce el siguiente código XML:
<?xml version="1.0" encoding="UTF-8"?>
<someNS:SomeElement xmlns:someNS="someNamespace" xmlns:someONS="someOtherNamespace" someONS:someKey="someValue">
<someNS:SomeElement someNS:someKey="someValue" />
</someNS:SomeElement>
que debe contener todo lo necesario. Espero que ayude.
20
Hay varias maneras de hacerlo. Sólo un par de ejemplos:
Usando XOM
import nu.xom.Document;
import nu.xom.Element;
public class XomTest {
public static void main(String[] args) {
XomTest xomTest = new XomTest();
xomTest.testXmlDocumentWithNamespaces();
}
private void testXmlDocumentWithNamespaces() {
Element root = new Element("my:example", "urn:example.namespace");
Document document = new Document(root);
Element element = new Element("element", "http://another.namespace");
root.appendChild(element);
System.out.print(document.toXML());
}
}
Uso de Java Implementación de W3C DOM
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.ls.DOMImplementationLS;
import org.w3c.dom.ls.LSOutput;
import org.w3c.dom.ls.LSSerializer;
public class DomTest {
private static DocumentBuilderFactory dbf = DocumentBuilderFactory
.newInstance();
public static void main(String[] args) throws Exception {
DomTest domTest = new DomTest();
domTest.testXmlDocumentWithNamespaces();
}
public void testXmlDocumentWithNamespaces() throws Exception {
DocumentBuilder db = dbf.newDocumentBuilder();
DOMImplementation domImpl = db.getDOMImplementation();
Document document = buildExampleDocumentWithNamespaces(domImpl);
serialize(domImpl, document);
}
private Document buildExampleDocumentWithNamespaces(
DOMImplementation domImpl) {
Document document = domImpl.createDocument("urn:example.namespace",
"my:example", null);
Element element = document.createElementNS("http://another.namespace",
"element");
document.getDocumentElement().appendChild(element);
return document;
}
private void serialize(DOMImplementation domImpl, Document document) {
DOMImplementationLS ls = (DOMImplementationLS) domImpl;
LSSerializer lss = ls.createLSSerializer();
LSOutput lso = ls.createLSOutput();
lso.setByteStream(System.out);
lss.write(document, lso);
}
}
Cuestiones relacionadas
- 1. analizar XML con espacios de nombres en Java utilizando XPath
- 2. Creación de documento XML con Python/ElementTree y espacios de nombres
- 3. Como recuperar espacios de nombres de archivos XML utilizando XPath
- 4. Configuración de espacios de nombres y prefijos en un documento DOM de Java
- 5. ¿Analizar espacios de nombres XML?
- 6. XPath en un documento XML con espacio de nombres
- 7. Parse XML con XPath y espacios de nombres en Java
- 8. HTML 5 Agregar espacios de nombres XML
- 9. Creación de un documento XMERL en Erlang
- 10. Creando un documento XML específico usando espacios de nombres en C#
- 11. JAVA: documento XML de compilación utilizando expresiones XPath
- 12. Cómo analizar correctamente un documento XML con espacios de nombres arbitrarios
- 13. ¿Cómo crear un documento XML utilizando XmlDocument?
- 14. Predefinir espacios de nombres XML para DataContractSerializer
- 15. Espacios de nombres XML y atributos
- 16. Crear documento XML utilizando nodeList
- 17. cómo generar documentos XML con espacios de nombres en Python
- 18. Agregar espacio de nombres a un documento XML ya creado
- 19. cómo agregar espacios de nombres XML
- 20. serialización XML + espacios de nombres (C#)
- 21. Creación de XML dinámico en Java
- 22. Recuperación de espacios de nombres de elemento en Java (utilizando DOM)
- 23. uso de LINQ to XML con espacios de nombres XML
- 24. Obtener valor de atributo de un documento XML utilizando C#
- 25. mejor analizador de Xml de Java para manipular/editar un documento xml existente
- 26. Serializar el objeto sin espacios de nombres utilizando DataContractSerializer
- 27. Averigüe el URI de espacio de nombres predeterminado de un documento XML en C#
- 28. Soporte de Ruby para espacios de nombres XML
- 29. ¿Cómo 'seleccionar' desde XML con espacios de nombres?
- 30. Espacios de nombres (predeterminado) en JDOM
Y si quieres nombre del elemento con el prefijo (usando XOM), sólo tiene que llamar al nuevo elemento ("prefijo : elemento "," urn: example.namespace "); –