我从服务器获取一个字符串,并希望从中提取Json字符串 这是字符串
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">
[{"isAssigned": false,"Name": "c:\\inetpub\\wwwroot\\XLEZ\\CLIENT","LastModified": ""},
{"isAssigned": true,"Name": "\\mokuji.html","LastModified": "20140806 165709"},
{"isAssigned": false,"Name": "\\result.html",{"LastModified": "20131002 235302"}]
</string>
我无法弄清楚如何做到这一点...... 这是JSFiddle
答案 0 :(得分:3)
基于this通过Convert XML to JSON (and back) using Javascript
我这样做了:
无错误处理
function parseXml(xml) {
var dom = null;
if (window.DOMParser) {
try {
dom = (new DOMParser()).parseFromString(xml, "text/xml");
} catch (e) {
dom = null;
}
} else if (window.ActiveXObject) {
try {
dom = new ActiveXObject('Microsoft.XMLDOM');
dom.async = false;
if (!dom.loadXML(xml)) // parse error ..
window.alert(dom.parseError.reason + dom.parseError.srcText);
} catch (e) {
dom = null;
}
} else alert("cannot parse xml string!");
return dom;
}
function extractJson() {
var xml = '<?xml version="1.0" encoding="utf-8"?><string xmlns="http://tempuri.org/">[ {"x":"y"},{"a":"b"}]</string>';
var json = JSON.parse(parseXml(xml).firstChild.textContent);
console.log(json)
}
答案 1 :(得分:2)
如果您不反对使用jQuery,它会处理从XML字符串遍历和提取数据以及HTML字符串。
您可以像这样拉
的JSON字符串 // Get JSON string out
var extractedJson = $(jsonData).text();
// If you need it as an object
var extractedJsonAsObject = $.parseJSON(extractedJson);
以下是你的小提琴的一个实例:
答案 2 :(得分:1)
您可以简单地解析XML并获取其内容
function extractJson()
{
var jsonData = '<?xml version="1.0" encoding="utf-8"?><string xmlns="http://tempuri.org/">[ {'sone': 'json'},{'some': 'json2'}]</string>';
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(jsonData,"text/xml");
console.log(xmlDoc.getElementsByTagName('string')[0].innerHTML);
}
extractJson();
注意: Internet Explorer使用loadXML()方法解析XML字符串,而其他浏览器使用DOMParser对象。
答案 3 :(得分:0)
Here是一个完成这项工作的GIST。
代码在kotlin中,但可以很容易地翻译成任何语言。
答案 4 :(得分:-2)
假设Json不包含标签,您只需将所有xml标签替换为空字符串(即删除它们),如下所示:
function extractJson(){
var jsonData = '<?xml version="1.0" encoding="utf-8"?><string xmlns="http://tempuri.org/">[ {sonejson},{some json2}]</string>';
var extractdJson = jsonData.replace(/\<[^\>]+\>/gi,''); // extracted jason fron jsonData
alert(extractdJson);
}
希望这有帮助