有没有将html转成json的方法呢?

发布于 2022-09-04 19:38:10 字数 184 浏览 20 评论 0

最近接到一份工作,看似很普通,将文章用ajax读取然后浏览器滚动的时候动态加载文章,但是问题来了,文章源接口是以XML提供的,文章源与前端又不在一个域名下,这就涉及到XML跨域问题,但是文章源提供了可以用xslt的抓取系统,这样XML就可以转成html了,那么可以将html转成json然后跨域访问吗?或者xslt可以直接将xml转成json跨域访问吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

江湖彼岸 2022-09-11 19:38:10
  1. 让对方允许跨域访问

  2. 自己后端写个服务去抓去,然后前端从自己的服务器端读取显示

梦过后 2022-09-11 19:38:10

node端有postHtml

浏览器端不清楚可以github上搜搜

烟柳画桥 2022-09-11 19:38:10

构造函数并导出(可改为class)

function XmlToJson() {}
XmlToJson.prototype.setXml = function(xml) {
    if (xml && typeof xml == "string") {
        this.xml = document.createElement("div");
        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
春风十里 2022-09-11 19:38:10

浏览器的 Ajax 跨域和 XML 还是 JSON格式 木有啥大关系。

你需要的是Ajax跨域解决方案。

維他命╮ 2022-09-11 19:38:10

不知道是不是我的理解有问题,题主的要求不是跟爬虫很像吗?用爬虫爬回来,然后再解析到前台?不知道是不是我理解错了,或者用爬虫也能实现

知足的幸福 2022-09-11 19:38:10

可以用iframe啊 网页中嵌套网页

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文