Heim > Fragen und Antworten > Hauptteil
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?
滿天的星座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