¿Cómo exportar una clase a xml sin namespace?
¡Hola a todos!
Estoy intentando exportar una clase a xml y quitar la etiqueta "xmlns" de la clase madre. Estas son mis clases para crear el XML.
Class Class.Test Extends (%RegisteredObject, %XML.Adaptor)
{
Parameter NAMESPACE = "http://mynamespace.com/test";
Property Person As Class.Person; Property Address As Class.Address;
}Class Class.Person Extends (%RegisteredObject, %XML.Adaptor)
{
Parameter NAMESPACE = "http://mynamespace.com/test";
Property name As %String; Property age As %String;
}Class Class.Address Extends (%RegisteredObject, %XML.Adaptor)
{
Parameter NAMESPACE = "http://mynamespace.com/test";
Property location As %String;
}Esta es mi función para exportar el XML.
set writer=##class(%XML.Writer).%New() set writer.Indent=1 set writer.Charset="ISO-8859-1" set status=writer.OutputToString() set status=writer.RootObject(objectTest) set xml=writer.GetXMLString()
Este es el xml que se generó:
<?xml version="1.0" encoding="ISO-8859-1"?> <Test xmlns="http://mynamespace.com/test"> <Person> <name>John</name> <age>22</age> </Person> <Address> <location>New York NY 10036</location> </Address> </Test>
Cuando elimino el parámetro NAMESPACE desde la Clase.Test pasa esto con mi xml.
<?xml version="1.0" encoding="ISO-8859-1"?> <Test> <Person xmlns:s01="http://mynamespace.com/test"> <s01:name>1</s01:name> </Person> <ResultadoCultura xmlns:s01="http://mynamespace.com/test"> <s01:location>New York NY 10036</s01:location> </ResultadoCultura> </Test>
¿Alguien me podría ayudar? Quiero crear este XML:
<?xml version="1.0" encoding="ISO-8859-1"?> <Test> <Person> <name>John</name> <age>22</age> </Person> <Address> <location>New York NY 10036</location> </Address> </Test>
Un saludo.
Comments
Como ya extiendes de %XML.Adaptor, directamente pueden utilizarse las funcionalidades de esa clase para obtener el XML, por ejemplo:
do objectTest.XMLExportToString(.xml)
write xmlque ya te generará:
<Test><Person><name>John</name><age>22</age></Person><Address><location>New York NY 10036</location></Address></Test>A lo mejor dejando vacío el parámetro namespace (en todas las clases). Si no tiene significado para ti, digo.
El parámetro es opcional. Si no lo informas, no aparece.
PD: La opción de @Jose Tomas Salvador es buena pero omite la etiqueta xml de inicio.
<?xml version="1.0" encoding="ISO-8859-1"?>