XML2JS获取根节点OBJ(如果名称未知)(变化)



我正在使用 xml2js 在我的 Aguilar CLI 9 项目中解析 xml,并且想知道如果名称未知(变化(如何获取根节点 obj。例如,以下查询语法用于获取根节点 obj 和属性值:

result.Home.$.Name;

但是,根据要求,如果根将是主页,Foo等,我不会。我尝试了以下方法,但没有奏效:

result[0].$.Name;
result.root.$.Name;

另外,我对 Angular 和 Typescript 非常陌生,任何人都可以指出我一些关于正在使用什么查询语法的好文档吗?不确定这是否是xml2js,打字稿,特定于js。我习惯使用 xpath 进行查询,所以这有很大的不同。

提前感谢!

xml2js返回的顶级对象只有一个自己的属性,它对应于根元素的名称。我们可以利用这些知识来访问与根 XML 元素对应的属性,而无需静态地知道元素名称。

首先,我们将获取结果对象自己的属性键。最简单的方法是使用Object.keys

const result = await xml2js.parseStringPromise(someXML);
const keys = Object.keys(result);

现在,这会产生一个属性键数组,但由于对象只有一个,我们可以只使用第一个键

const [rootKey] = Object.keys(result);

现在我们将使用此 rootKey 访问表示根元素的对象,无论其标签名称如何。

result[rootKey];

把它放在一起:

import xml2js from 'xml2js';
async function processXML() {
const result = await xml2js.parseStringPromise(someXML);
const [rootKey] = Object.keys(result);
const attributes = result[rootKey].$;
}

最新更新