如果名称未知(变化),xml2js 获取根节点 obj
xml2js getting root node obj if name unknown (varies)
我在我的 Aguilar CLI 9 项目中使用 xml2js 来解析 xml,并且想知道如果根据请求名称未知(变化),如何获取根节点 obj。例如,以下查询语法用于获取根节点对象和属性值:
result.Home.$.Name;
但是,根据要求,如果 root 是 Home、Foo 等,我不会。我尝试了以下方法,但没有成功:
result[0].$.Name;
result.root.$.Name;
此外,我对 Angular 和 Typescript 还很陌生,谁能给我指点一些关于使用什么查询语法的好文档?不确定那是否是特定于 js 的 xml2js、打字稿。我习惯使用 xpath 查询,所以这有很大的不同。
提前致谢!
xml2js返回的顶层对象只有一个own属性,对应root的名字元素。我们可以利用这些知识来访问对应于根 XML 元素的 属性,而无需静态知道元素名称。
首先我们会得到结果对象的own属性键。最简单的方法是使用 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].$;
}
我在我的 Aguilar CLI 9 项目中使用 xml2js 来解析 xml,并且想知道如果根据请求名称未知(变化),如何获取根节点 obj。例如,以下查询语法用于获取根节点对象和属性值:
result.Home.$.Name;
但是,根据要求,如果 root 是 Home、Foo 等,我不会。我尝试了以下方法,但没有成功:
result[0].$.Name;
result.root.$.Name;
此外,我对 Angular 和 Typescript 还很陌生,谁能给我指点一些关于使用什么查询语法的好文档?不确定那是否是特定于 js 的 xml2js、打字稿。我习惯使用 xpath 查询,所以这有很大的不同。
提前致谢!
xml2js返回的顶层对象只有一个own属性,对应root的名字元素。我们可以利用这些知识来访问对应于根 XML 元素的 属性,而无需静态知道元素名称。
首先我们会得到结果对象的own属性键。最简单的方法是使用 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].$;
}