¿Cómo puedo dejar de rieles de validación XML?
-
28-09-2019 - |
Pregunta
Estoy de someterse a un servicio web rieles el mensaje siguiente:
xmlPostData = "<message>
<message-text>" + MESSAGE_WITH_XML + "</message-text>
<name>" + subject + "</name>
<f1>" + toPhone + "</f1>
<f2>" + fromPhone + "</f2>
</message>";
El problema es el del campo con contener un texto con datos XML, es una solución, pero necesito estar en condiciones de presentar a la que xml db y obtener desde allí.
carriles de parada ¿Puedo validar y sustituir mi XML en formato JSON? así es como se ve:
--- !map:HashWithIndifferentAccess
smil: !map:HashWithIndifferentAccess
head: !map:HashWithIndifferentAccess
layout: !map:HashWithIndifferentAccess
root_layout: !map:HashWithIndifferentAccess
height: "600"
background_color: white
width: "800"
type: text/smil-basic-layout
body: !map:HashWithIndifferentAccess
par: !map:HashWithIndifferentAccess
text: !map:HashWithIndifferentAccess
left: "33"
begin: "33"
dur: "33"
val: 34343434343434343aaaaaaa
height: "33"
width: "33"
top: "33"
Y este es el método de rubí del servicio web rieles:
# POST /messages
# POST /messages.xml
def create
@message = Message.new(params[:message])
respond_to do |format|
if @message.save
flash[:notice] = 'Message was successfully created.'
format.html { redirect_to(@message) }
format.xml { render :xml => @message, :status => :created, :location => @message }
else
format.html { render :action => "new" }
format.xml { render :xml => @message.errors, :status => :unprocessable_entity }
end
end
end
es una solución, pero por el momento esto tiene que trabajar ...
Solución
Si sólo necesita insertar texto arbitrario, que puedes usar CDATA. Sólo asegúrese de que la cadena de ]]>
no aparece en el MESSAGE_WITH_XML.
xmlPostData = "<message>
<message-text><![CDATA[" + MESSAGE_WITH_XML + "]]></message-text>
<name>" + subject + "</name>
<f1>" + toPhone + "</f1>
<f2>" + fromPhone + "</f2>
</message>";
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow