我试图从某个服务器获取响应。服务器可以根据请求类型以xml / json格式发送响应。
现在我如何确定数据是否采用xml / json格式,如果数据是xml格式,那么我可以将xml转换为json并在json上进行处理。
在try / catch内部对我没有帮助,因为我得到数据json的字符串化/解析格式。
现在实现这一目标的最佳方法是什么?在解码之前是否有蚂蚁方法来确定数据是否为xml / json格式?
此致 -M -
答案 0 :(得分:3)
我知道这是一篇较老的帖子,但我遇到了它,不幸的是,帕特里克的答案对我来说并不是很有帮助。充其量,你可以确定该字符串至少是试图成为XML,更糟糕的是,你甚至不会得到匹配,因为它可能已经以空格为前缀等。也不是很好的情况,是找出由于缺少标记等,XML本身仍然无效,这似乎是OP的全部要点。
我发现libxmljs是您正在寻找的最佳解决方案。您可以解析,验证基本字符串以及详细结构。
检查XML语法的一个例子是:
program.isValidSyntaxStructure = function (text) {
try {
libxmljs.parseXml(text);
} catch (e) {
return false;
}
return true;
};
检查特定结构/模式的示例如下:
var xsd = '<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="comment" type="xs:string"/></xs:schema>';
var xml_valid = '<?xml version="1.0"?><comment>A comment</comment>';
var xml_invalid = '<?xml version="1.0"?><commentt>A comment</commentt>';
var xsdDoc = libxml.parseXml(xsd);
var xmlDocValid = libxml.parseXml(xml_valid);
var xmlDocInvalid = libxml.parseXml(xml_invalid);
assert.equal(xmlDocValid.validate(xsdDoc), true);
assert.equal(xmlDocInvalid.validate(xsdDoc), false);
答案 1 :(得分:0)
如果它具有正确的XML格式,可能只是一个快速的字符串搜索?
if (request.indexOf("<?xml") != -1) {
parse xml object...
}
else {
parse json object...
}
我的意思是它毕竟只是作为一个字符串接收,如果它的XML或json应该相应地格式化 json起始像“{” 和XML应该像“