格式化XMLSerializer()的输出字符串.serializetostring
Formatting Output String from XMLSerializer().serializeToString
我使用下面的调用来获取部分DOM的XML代码。
var sXML = new XMLSerializer().serializeToString(document.getElementsByTagName("TopElementTag")[0]);
但是,当我显示这个字符串时,它都是一行。
是否有一种方法来格式化这个字符串,使它有换行和制表符,使其易于人类阅读?
我用下面的代码使用了vkbeauty。
var sXML = new XMLSerializer().serializeToString(document.getElementsByTagName("TopElementTag")[0]);
sXML = vkbeautify.xml(sXML);
这个迷你库可以在不到1kb的未压缩文件中进行美化和缩小。
https://gist.github.com/max-pub/a5c15b7831bbfaba7ad13acefc3d0781https://codepen.io/maxpub/pen/qBWPJEL?编辑= 1010
XML = {
parse: (string, type = 'text/xml') => new DOMParser().parseFromString(string, type), // like JSON.parse
stringify: DOM => new XMLSerializer().serializeToString(DOM), // like JSON.stringify
transform: (xml, xsl) => {
let proc = new XSLTProcessor();
proc.importStylesheet(typeof xsl == 'string' ? XML.parse(xsl) : xsl);
let output = proc.transformToFragment(typeof xml == 'string' ? XML.parse(xml) : xml, document);
return typeof xml == 'string' ? XML.stringify(output) : output; // if source was string then stringify response, else return object
},
minify: node => XML.toString(node, false),
prettify: node => XML.toString(node, true),
toString: (node, pretty, level = 0, singleton = false) => {
if (typeof node == 'string') node = XML.parse(node);
let tabs = pretty ? Array(level + 1).fill('').join(''t') : '';
let newLine = pretty ? ''n' : '';
if (node.nodeType == 3) return (singleton ? '' : tabs) + node.textContent.trim() + (singleton ? '' : newLine)
if (!node.tagName) return XML.toString(node.firstChild, pretty);
let output = tabs + `<${node.tagName}`; // >'n
for (let i = 0; i < node.attributes.length; i++)
output += ` ${node.attributes[i].name}="${node.attributes[i].value}"`;
if (node.childNodes.length == 0) return output + ' />' + newLine;
else output += '>';
let onlyOneTextChild = ((node.childNodes.length == 1) && (node.childNodes[0].nodeType == 3));
if (!onlyOneTextChild) output += newLine;
for (let i = 0; i < node.childNodes.length; i++)
output += XML.toString(node.childNodes[i], pretty, level + 1, onlyOneTextChild);
return output + (onlyOneTextChild ? '' : tabs) + `</${node.tagName}>` + newLine;
}
}
相关文章:
- 如何将angularjs中的javascript字符串输出为循环数组
- Javascript将数组转换为字符串并使其反向输出
- 以字符串形式输出Javascript中的日期
- 编辑输出字符串函数ol.control.MouseControl
- jQuery从选项的输出字符串中选择HTML选项
- 使用日期差来输出字符串
- 如何让杰克逊在输出字符串中转义脚本>
- 从输出字符串中消除空字符串
- 从后台代码输出字符串到新页面或窗口
- 格式化XMLSerializer()的输出字符串.serializetostring
- 逐字输出字符串的最后两行
- JSON.将输出字符串化以显示在表中
- 反转输出字符串的顺序
- 输出字符串中两个变量的加/减/乘/除
- PHP如何输出字符串到html
- 需要一个Firefox ctypes输出字符串参数的工作示例
- 如何制作输出字符串的Three.js着色器
- Javascript:JSFiddle 的问题 - 输出字符串的简单 onclick 事件不起作用
- 我如何在Ember中输出字符串,同时仍然由把手解释它
- Javascript -使用innerHTML输出字符串*WITHOUT* html编码的特殊字符