Heim  >  Fragen und Antworten  >  Hauptteil

javascript - Gibt es eine Möglichkeit, HTML in JSON zu konvertieren?

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?

高洛峰高洛峰2711 Tage vor699

Antworte allen(6)Ich werde antworten

  • PHP中文网

    PHP中文网2017-05-19 10:44:37

    1. 让对方允许跨域访问

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

    Antwort
    0
  • ringa_lee

    ringa_lee2017-05-19 10:44:37

    node端有postHtml

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

    Antwort
    0
  • 滿天的星座

    滿天的星座2017-05-19 10:44:37

    构造函数并导出(可改为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

    Antwort
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-19 10:44:37

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

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

    Antwort
    0
  • 黄舟

    黄舟2017-05-19 10:44:37

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

    Antwort
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-19 10:44:37

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

    Antwort
    0
  • StornierenAntwort