javascript - 有沒有將html轉成json的方法呢?
高洛峰
高洛峰 2017-05-19 10:42:37

最近接到一份工作,看似很普通,將文章用ajax讀取然後瀏覽器滾動的時候動態加載文章,但是問題來了,文章源接口是以XML提供的,文章源與前端又不在一個網域下,這就牽涉到XML跨域問題,但是文章來源提供了可以用xslt的抓取系統,這樣XML就可以轉成html了,那麼可以將html轉成json然後跨網域存取嗎?或者xslt可以直接將xml轉成json跨域存取嗎?

高洛峰
高洛峰

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

全部回覆(6)
滿天的星座

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

调用方法转xml为json并输出到console查看

import { XmlToJson } from './xmlToJson.js';
let xmlParser = new XmlToJson();
let json = xmlParser.parse(xml);
console.log(JSON.stringify(json));//输出xml转换后的json
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!