1

我有一个问题要遍历从 API 获得的非常复杂的响应。描述整个情况。

我有一个提供 XML 的 API。我正在使用 xml2js 节点模块将 XML 解析为 JavaScript 对象。直到某个时候它工作正常,但是我不知道如何遍历我从 xml 解析的复杂对象。

这是我的 JavaScript:从 API 获取 XML 数据 > 将 XML 解析为 JS 对象。

let headers = new Headers();

headers.append("Content-Type", "application/xml");
headers.append("Accept", "*/*");

headers.append("Access-Control-Allow-Origin", "http://localhost:8080");
headers.append("Access-Control-Allow-Credentials", "true");

headers.append("GET", "POST", "OPTIONS");

headers.append(
  "Authorization",
  "Basic [some_hash_here]"
);

const proxyurl = "https://cors-anywhere.herokuapp.com/";
const url =
  "https://some-website-api.com/some/request"; // site that doesn’t send Access-Control-*

fetch(proxyurl + url, { headers: headers }) // https://cors-anywhere.herokuapp.com/https://some-website-api.com/some/request
  .then(response => response.text())
  .then(contents => {
    console.log(contents);
    var convert = require("xml-js");

    var xml = contents;
    var options = { ignoreComment: true, alwaysChildren: true, compact: true };
    var result = convert.xml2js(xml, options); // converting xml to js objects
    console.log(result);
    alert(result.application.modules.module[0].moduleItem.dataField[0]._attributes.name);

  });

最后的警报工作正常,我可以得到这个特定的值:

但是如何迭代并从其他 moduleItem 对象中获取所有其他值?所以名字也来自:

application.modules.module[1].moduleItem.dataField[1]._attributes.name
application.modules.module[2].moduleItem.dataField[2]._attributes.name
application.modules.module[3].moduleItem.dataField[3]._attributes.name

ETC...

能够使用 Vue.js 数据模型将它们呈现在列表中。

我在下面尝试过,但没有运气。

    let returnedName = result.application.modules.module.moduleItem.dataField._attributes.map(x => x.name);
    this.nameModules = returnedName

这是我想要迭代的响应结构。

结构体

4

0 回答 0