我正在尝试使用API来更新应用程序中的某些内容。它将数据作为XML。其中一个必填字段实际存储XML。我有一些问题。如果有人能想到这个帖子或更好标签的更好名称,请更新它...这是我能做的最好的。
从DB开始(prfx_xml
是有效的xml):
PRFX_ID PRFX_NAME PRFX_XML
1 thing_one <stuff><idk>123</idk><val>ABC</val></stuff>
我需要以XML格式发送内容....
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<entry xmlns="http://purl.org/atom/ns#">
<ns:PRFX.update xmlns:tes="http://www.zzz.com/client/nsservlet">
<ns:id>1</ns:id>
<ns:name>thing_one</ns:name>
<ns:xmldata>
<stuff><idk>123</idk><val>ABC</val></stuff> <!-- This needs to be stored as a string value in the DB -->
</ns:xmldata>
</ns:PRFX>
</ns:PRFX.update>
</entry>
XML在发送之前编码为ISO-8859-1。我假设应用程序解码它然后解析XML。当它执行此操作时,它还会解析出xmldata
字段。当这篇文章发布到数据库时,我留下了:
PRFX_ID PRFX_NAME PRFX_XML
1 thing_one 123ABC
我该怎么办? 如何强制它以字符串形式接收?我可以访问第三方应用程序的后端,但它是Java版本,我甚至不知道从哪里开始。 jar和.war的。我对XML的了解有限。添加命名空间会有帮助吗?应用程序是否仍然能够理解它的内容?如果我使用引号,它会在数据库中存储引号。我尝试单独编码嵌套的XML,但也没有用。
想法?
答案 0 :(得分:1)
基于服务似乎正在查看您正在发送的XML内部这一事实,我建议您尝试使用CDATA进行处理,以防止服务进入内部。
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<entry xmlns="http://purl.org/atom/ns#">
<ns:PRFX.update xmlns:tes="http://www.zzz.com/client/nsservlet">
<ns:id>1</ns:id>
<ns:name>thing_one</ns:name>
<ns:xmldata>
<![CDATA[<stuff><idk>123</idk><val>ABC</val></stuff>]]>
</ns:xmldata>
</ns:PRFX>
</ns:PRFX.update>
</entry>
但这只是猜测。在这种情况下,正确的操作是找出服务想要看到的内容。