簡體   English   中英

如果名稱未知,xml2js 獲取根節點 obj(可變)

[英]xml2js getting root node obj if name unknown (varies)

我在我的 Aguilar CLI 9 項目中使用 xml2js 來解析 xml 並且想知道如果名稱未知(根據請求變化)如何獲取根節點 obj。 例如,以下查詢語法可用於獲取根節點 obj 和屬性值:

result.Home.$.Name;

但是,根據要求,如果 root 是 Home、Foo 等,我不會這樣做。我嘗試了以下方法,但沒有奏效:

result[0].$.Name;

result.root.$.Name;

另外,我對 Angular 和 Typescript 非常陌生,誰能指出一些關於正在使用什么查詢語法的好文檔? 不確定這是否是 js 特定的 xml2js、typescript。 我習慣使用 xpath 進行查詢,所以這有很大不同。

提前致謝!

xml2js返回的頂層object只有一個自己的屬性,對應根元素的名稱。 我們可以利用這些知識來訪問與根 XML 元素對應的屬性,而無需靜態知道元素名稱。

首先,我們將獲得結果 object 的自己的屬性鍵。 最簡單的方法是使用Object.keys

const result = await xml2js.parseStringPromise(someXML);

const keys = Object.keys(result);

現在,這會產生一個屬性鍵數組,但由於 object 只有一個,我們可以只使用第一個鍵

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

現在我們將使用這個 rootKey 來訪問代表根元素的 object,不管它的標簽名稱是什么。

result[rootKey];

把它放在一起:

import xml2js from 'xml2js';

async function processXML() {
  const result = await xml2js.parseStringPromise(someXML);

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

  const attributes = result[rootKey].$;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM