84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
最近接到一份工作,看似很普通,将文章用ajax读取然后浏览器滚动的时候动态加载文章,但是问题来了,文章源接口是以XML提供的,文章源与前端又不在一个域名下,这就涉及到XML跨域问题,但是文章源提供了可以用xslt的抓取系统,这样XML就可以转成html了,那么可以将html转成json然后跨域访问吗?或者xslt可以直接将xml转成json跨域访问吗?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
让对方允许跨域访问
自己后端写个服务去抓去,然后前端从自己的服务器端读取显示
node端有postHtml
浏览器端不清楚可以github上搜搜
构造函数并导出(可改为class)
function XmlToJson() {} XmlToJson.prototype.setXml = function(xml) { if (xml && typeof xml == "string") { this.xml = document.createElement("p"); this.xml.innerHTML = xml; this.xml = this.xml.getElementsByTagName("*")[0]; } else if (typeof xml == "object") { this.xml = xml; } }; XmlToJson.prototype.getXml = function() { return this.xml; }; XmlToJson.prototype.parse = function(xml) { this.setXml(xml); return this.convert(this.xml); }; XmlToJson.prototype.convert = function(xml) { if (xml.nodeType != 1) { return null; } var obj = {}; obj.xtype = xml.nodeName.toLowerCase(); var nodeValue = (xml.textContent || "").replace(/(\r|\n)/g, "").replace(/^\s+|\s+$/g, ""); if (nodeValue && xml.childNodes.length == 1) { obj.text = nodeValue; } if (xml.attributes.length > 0) { for (var j = 0; j < xml.attributes.length; j++) { var attribute = xml.attributes.item(j); obj[attribute.nodeName] = attribute.nodeValue; } } if (xml.childNodes.length > 0) { var items = []; for (var i = 0; i < xml.childNodes.length; i++) { var node = xml.childNodes.item(i); var item = this.convert(node); if (item) { items.push(item); } } if (items.length > 0) { obj.items = items; } } return obj; }; export { XmlToJson };
xml模板字符串
let xml = `<viewport id="menuPane" layout="border"> <panel region="center" border="0" layout="border"> <tbar> <toolbar text="XXXX"> <menu> <text text="11"> </text> <text text="22"> </text> <text text="33"> </text> </menu> </toolbar> <toolbar text="XXXX"> <menu> <text text="44"> </text> <text text="55"> </text> <menu> <text text="6 6"> </text> </menu> <text text="77"> </text> </menu> </toolbar> </tbar> </panel> </viewport>`;
调用方法转xml为json并输出到console查看
import { XmlToJson } from './xmlToJson.js'; let xmlParser = new XmlToJson(); let json = xmlParser.parse(xml); console.log(JSON.stringify(json));//输出xml转换后的json
浏览器的 Ajax 跨域和 XML 还是 JSON格式 木有啥大关系。
你需要的是Ajax跨域解决方案。
不知道是不是我的理解有问题,题主的要求不是跟爬虫很像吗?用爬虫爬回来,然后再解析到前台?不知道是不是我理解错了,或者用爬虫也能实现
可以用iframe啊 网页中嵌套网页
让对方允许跨域访问
自己后端写个服务去抓去,然后前端从自己的服务器端读取显示
node端有postHtml
浏览器端不清楚可以github上搜搜
构造函数并导出(可改为class)
xml模板字符串
调用方法转xml为json并输出到console查看
浏览器的 Ajax 跨域和 XML 还是 JSON格式 木有啥大关系。
你需要的是Ajax跨域解决方案。
不知道是不是我的理解有问题,题主的要求不是跟爬虫很像吗?用爬虫爬回来,然后再解析到前台?不知道是不是我理解错了,或者用爬虫也能实现
可以用iframe啊 网页中嵌套网页