javascript - Existe-t-il un moyen de convertir du HTML en JSON?
高洛峰
高洛峰 2017-05-19 10:42:37
0
6
771

J'ai récemment reçu un travail qui semblait très ordinaire. J'ai utilisé ajax pour lire l'article, puis j'ai chargé dynamiquement l'article lorsque le navigateur défilait. Mais voici le problème : l'interface source de l'article est fournie en XML, et la source de l'article et. le front-end n'est pas le même. Sous le nom de domaine, cela implique des problèmes inter-domaines XML, mais la source de l'article fournit un système d'exploration qui peut utiliser xslt, afin que XML puisse être converti en HTML. Le HTML peut-il être converti en JSON. puis accessible à travers les domaines ? Ou xslt peut-il convertir directement XML en JSON pour un accès inter-domaines ?

高洛峰
高洛峰

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

répondre à tous(6)
Ty80
  1. Demandez à l'autre partie d'autoriser l'accès entre domaines

  2. Écrivez un service sur votre propre backend pour le capturer, puis le frontend le lit et l'affiche depuis votre propre serveur

左手右手慢动作

Il y a postHtml côté nœud

Si vous ne connaissez pas le côté navigateur, vous pouvez le rechercher sur github

滿天的星座

Constructeur et export (peut être modifié en classe)

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 };

chaîne de modèle 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>`;

Appelez la méthode pour convertir XML en JSON et envoyez-la sur la console pour la visualisation

import { XmlToJson } from './xmlToJson.js';
let xmlParser = new XmlToJson();
let json = xmlParser.parse(xml);
console.log(JSON.stringify(json));//输出xml转换后的json
给我你的怀抱

Le navigateur Ajax cross-domain n'a rien à voir avec le format XML ou JSON.

Ce dont vous avez besoin, c'est d'une solution multidomaine Ajax.

黄舟

Je ne sais pas s'il y a quelque chose qui ne va pas dans ma compréhension. Les exigences du questionneur ne sont-elles pas similaires à celles d'un robot ? Utiliser un robot pour revenir en arrière, puis l'analyser à la réception ? Je ne sais pas si je comprends mal, ou si cela peut aussi être réalisé à l'aide d'un robot

给我你的怀抱

Vous pouvez utiliser iframe pour intégrer des pages Web dans des pages Web

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal