fast-xml-parser
說(shuō)明
項(xiàng)目中需要解析一次xml文件, 但是從百度中獲取的一些解析方法似乎都有所缺陷, 并沒(méi)辦法很好的解析我需要解析的xml文件, 所以就上github里找到了這個(gè)插件, 速度似乎是該插件的優(yōu)秀之處, 但是我選擇該插件的原因主要是它能解析我所需解析的文件
下邊是一些官方文檔的說(shuō)明, 這個(gè)插件似乎用的人并不多, 所以就記錄一下, 也順便給配置項(xiàng)都翻譯一下, 我項(xiàng)目中如果有使用該配置的話(huà)就會(huì)加上我對(duì)應(yīng)的一些說(shuō)明
在我的項(xiàng)目中, 主要是解析一個(gè)模板文件的xml結(jié)構(gòu), 所以對(duì)應(yīng)的是需要獲取屬性并且解析為JSON格式, 下方是我對(duì)應(yīng)的一個(gè)demo
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fast-xml-parser/3.12.16/parser.min.js"></script>
// 配置
var options = {
attributeNamePrefix : "@_",
ignoreAttributes: false,
};
// 使用
$.ajax({
url: './1.tpl',
success: res => {
console.log(res);
var jsonObj = parser.parse(res, options);
console.log('json: ', jsonObj)
document.write(JSON.stringify(jsonObj))
}
})
使用
var jsonObj = parser.parse(xmlData [,options] );
var options = {
attributeNamePrefix : "@_",
attrNodeName: "attr", //default is 'false'
textNodeName : "#text",
ignoreAttributes : true,
ignoreNameSpace : false,
allowBooleanAttributes : false,
parseNodeValue : true,
parseAttributeValue : false,
trimValues: true,
cdataTagName: "__cdata", //default is 'false'
cdataPositionChar: "\\c",
localeRange: "", //To support non english character in tag/attribute values.
parseTrueNumberOnly: false,
attrValueProcessor: a => he.decode(a, {isAttributeValue: true}),//default is a=>a
tagValueProcessor : a => he.decode(a) //default is a=>a
};
配置(OPTIONS)說(shuō)明
OPTIONS
-
attributeNamePrefix: 提供預(yù)定的字符串作為屬性名稱(chēng)前綴, 比如@_, 這時(shí)假設(shè)解析的屬性為name,那么在解析后的JSON中該屬性將會(huì)解析為@_name -
attrNodeName: 將所有屬性分組為給定名稱(chēng)的屬性, 取代原本的屬性名稱(chēng), 修改為該名稱(chēng) -
ignoreAttributes: 忽略解析屬性, 配置該項(xiàng)的時(shí)候不會(huì)解析標(biāo)簽內(nèi)的屬性, 默認(rèn)為true -
ignoreNameSpace: 從標(biāo)記和屬性名稱(chēng)中移除命名空間字符串 -
allowBooleanAttributes: 標(biāo)記可以具有不帶任何值的屬性 -
parseNodeValue: 將屬性的值解析為float、integer或boolean -
parseAttributeValue: 將屬性的值解析為float、integer或boolean -
trimValues: 修剪屬性或節(jié)點(diǎn)的字符串值 -
decodeHTMLchar: This options has been removed from 3.3.4. Instead, use -tagValueProcessor, and attrValueProcessor. See above example. -
cdataTagName: 如果指定,解析器會(huì)將CDATA解析為嵌套標(biāo)記,而不是將其值添加到父標(biāo)記中 -
cdataPositionChar: 它將有助于將JSON轉(zhuǎn)換回XML,而不會(huì)失去CData的位置。 -
localeRange: 解析器將接受標(biāo)記或?qū)傩悦械姆怯⑽淖址?/li> -
parseTrueNumberOnly: 如果為真,則像“+123”或“0123”這樣的值不會(huì)被解析為數(shù)字。 -
tagValueProcessor: 轉(zhuǎn)換期間處理標(biāo)記值。如HTML解碼、單詞大寫(xiě)等,僅適用于字符串。 -
attrValueProcessor: 轉(zhuǎn)換期間處理屬性值。如HTML解碼、單詞大寫(xiě)等,僅適用于字符串 -
stopNodes: 不需要解析的標(biāo)記名數(shù)組。相反,它們的值被解析為字符串。