如何解析xml文件中存在的json

时间:2015-03-11 04:26:08

标签: jquery xml json

 <?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://s.com/webservices/">{
  "Status": "0",
  "UserID": "2",
  "SessionTimeOut": "10",
  "TestList": [
    {
      "PlantCode": "01",
      "PlantName": "Master",
      "PlantAddr": "Master",
      "PlantID": "1"
    },
    {
      "PlantCode": "02",
      "PlantName": "Plant1",
      "PlantAddr": "Plant1",
      "PlantID": "2"
    }
  ]
}</string>

我在xml响应中有一个json。我可以解析json但是如何从响应中检索它。

编辑:当我做以下事情时工作:

   var xml = response;
        var xmlString = (new XMLSerializer()).serializeToString(xml);

        var xmlDoc = $.parseXML(xmlString),
                $jqXml = $(xmlDoc),
                $json = $jqXml.find('string');
        var jsonRaw = $.parseJSON($json.text());

2 个答案:

答案 0 :(得分:1)

使用http://api.jquery.com/jquery.parsexml/

var xml = '<?xml version="1.0" encoding="utf-8"?><string xmlns="http://s.com/webservices/">{"Status": "0"}</string>';
var xmlDoc = $.parseXML(xml);
$jqXml = $(xmlDoc);
$json = $jqXml.find('string');
var jsonRaw = $.parseJSON($json.text());

这是一个带有完整XML字符串的JSFiddle示例:

https://jsfiddle.net/kzukj66e/

答案 1 :(得分:0)

如果您可以控制响应,最好将响应发送为纯Json而不是将其封装在xml字符串中。

否则你也可以尝试发送xml字符串并使用内置函数解析xml。

高度不推荐:如果由于某些奇怪的限制你无法发送纯json或纯xml,解决方案是使用正则表达式将json与xml分开。以下javascript正则表达式可以帮助将json与xml分开(可以改进)

json = original.replace(/^.*?(\{.*?)\<.*$/s,'$1')