[英]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.