我正在使用Node.js从XML文件读取数据。但是,当我尝试将文件中的数据与文字进行比较时,即使看起来相同,它也不匹配:
const parser: xml2js.Parser = new xml2js.Parser();
const suggestedMatchesXml: any
= fs.readFileSync(`${inputSuggMatchXmlFile}`, 'utf8');
parser.parseString(suggestedMatchesXml, (_parseErr: any, result: any) => {
// console.debug(`result = ${util.inspect(result, false, null)}`);
suggestedMatchesObjFromXml = JSON.parse(JSON.stringify(result));
// console.debug(`suggestedMatchesObjFromXml BEFORE = ${JSON.stringify(suggestedMatchesObjFromXml)}`);
});
const destinations: Array<any> = suggestedMatchesObjFromXml.suggestedmatches.destination;
let docIdForUrl: string | undefined;
_.each(destinations, (destination: any) => {
const { url }: { url: string } = destination;
if (!destination.docId) {
console.debug(`processInputSmXmlFile(): url = ${url} ; index = ${_.indexOf(url, 'meetings')}`);
这是日志:
processInputSmXmlFile(): url = https://apps.na.collabserv.com/meetings/ ; index = -1
我不确定这怎么会发生,除非这些字符串之一是unicode,而另一个则不是。
如何转换这种方式,以便数据匹配?
答案 0 :(得分:1)
因为我正在做JSON.parse()
,所以url
不是字符串-它是一个对象。当我执行_.toString(url)
并将_.indexOf(url, 'meetings')
替换为_.includes(url, 'meetings')
时(由于Lodash indexOf()
仅用于数组),现在一切正常。