fast-xml-parser
說明
項目中需要解析一次xml文件, 但是從百度中獲取的一些解析方法似乎都有所缺陷, 并沒辦法很好的解析我需要解析的xml文件, 所以就上github里找到了這個插件具篇, 速度似乎是該插件的優(yōu)秀之處, 但是我選擇該插件的原因主要是它能解析我所需解析的文件
下邊是一些官方文檔的說明凌埂, 這個插件似乎用的人并不多驱显, 所以就記錄一下, 也順便給配置項都翻譯一下瞳抓, 我項目中如果有使用該配置的話就會加上我對應(yīng)的一些說明
在我的項目中埃疫, 主要是解析一個模板文件的xml結(jié)構(gòu), 所以對應(yīng)的是需要獲取屬性并且解析為JSON
格式孩哑, 下方是我對應(yīng)的一個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)說明
OPTIONS
-
attributeNamePrefix
: 提供預(yù)定的字符串作為屬性名稱前綴, 比如@_
栓霜, 這時假設(shè)解析的屬性為name
,那么在解析后的JSON
中該屬性將會解析為@_name
-
attrNodeName
: 將所有屬性分組為給定名稱的屬性横蜒, 取代原本的屬性名稱胳蛮, 修改為該名稱 -
ignoreAttributes
: 忽略解析屬性, 配置該項的時候不會解析標簽內(nèi)的屬性丛晌, 默認為true
-
ignoreNameSpace
: 從標記和屬性名稱中移除命名空間字符串 -
allowBooleanAttributes
: 標記可以具有不帶任何值的屬性 -
parseNodeValue
: 將屬性的值解析為float仅炊、integer或boolean -
parseAttributeValue
: 將屬性的值解析為float、integer或boolean -
trimValues
: 修剪屬性或節(jié)點的字符串值 -
decodeHTMLchar
: This options has been removed from 3.3.4. Instead, use -tagValueProcessor
, and attrValueProcessor. See above example. -
cdataTagName
: 如果指定澎蛛,解析器會將CDATA解析為嵌套標記抚垄,而不是將其值添加到父標記中 -
cdataPositionChar
: 它將有助于將JSON轉(zhuǎn)換回XML,而不會失去CData的位置谋逻。 -
localeRange
: 解析器將接受標記或?qū)傩悦械姆怯⑽淖址?/li> -
parseTrueNumberOnly
: 如果為真呆馁,則像“+123”或“0123”這樣的值不會被解析為數(shù)字。 -
tagValueProcessor
: 轉(zhuǎn)換期間處理標記值斤贰。如HTML解碼智哀、單詞大寫等次询,僅適用于字符串荧恍。 -
attrValueProcessor
: 轉(zhuǎn)換期間處理屬性值。如HTML解碼屯吊、單詞大寫等送巡,僅適用于字符串 -
stopNodes
: 不需要解析的標記名數(shù)組。相反盒卸,它們的值被解析為字符串骗爆。