javascript - Gibt es eine Möglichkeit, HTML in JSON zu konvertieren?
高洛峰
高洛峰 2017-05-19 10:42:37
0
6
687

Ich habe kürzlich einen Auftrag erhalten, der mir sehr gewöhnlich vorkam. Ich habe den Artikel mit Ajax gelesen und ihn dann dynamisch geladen, als der Browser gescrollt hat Das Front-End ist nicht identisch mit dem Domänennamen, es handelt sich um domänenübergreifende XML-Probleme, aber die Artikelquelle bietet ein Crawling-System, das XSLT verwenden kann, sodass XML in HTML konvertiert werden kann und dann domänenübergreifend darauf zugegriffen? Oder kann XSLT XML für den domänenübergreifenden Zugriff direkt in JSON konvertieren?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

Antworte allen(6)
Ty80
  1. 让对方允许跨域访问

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

左手右手慢动作

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啊 网页中嵌套网页

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!