【问题标题】:Parse XML to JSON when i call API ( JavaScript )当我调用 API ( JavaScript ) 时将 XML 解析为 JSON
【发布时间】:2021-03-09 10:17:39
【问题描述】:

我想将 XML API 的结果转换为 Json,为此我使用了一个函数。

但我得到一个数据。因为每个都不是函数错误。 下面是JSON中要修改的数据

我是不是在某个地方犯了错误?提前谢谢你。

fetch(url)
                .then((url) => url.text())
                .then((txtUrl) => {
                const xmlString = txtUrl;
                var data = new DOMParser().parseFromString(xmlString, 'text/xml');
                console.log(data);
                data = xmlToJson(data);
           
                const tbody = document.querySelector('#user-table tbody');
                
                tbody.innerHTML = '';
    
                
    
                data.forEach( (user) => {
                const entry = document.createElement('tr')
           
            entry.innerHTML = `

                <tr>
                    <td class="column1">${user.Sent}</td>
                    <td class="column2">${user.Bounced}</td>
                    <td class="column3">${user.Delivered}</td>
                    <td class="column3">${user.Opens}</td>
                    <td class="column3">${user.UniqueOpens}</td>
                    <td class="column3">${user.Clicks}</td>
                    <td class="column3">${user.UniqueClicks}</td>
                    <td class="column3">${user.Clickers}</td>
                    <td class="column3">${user.Complaints}</td>
                    <td class="column3">${user.Unsubscribes}</td>
                    <td class="column3">${user.Bcc}</td>
                </tr>
                `;
              
                tbody.appendChild(entry);
                    });
    }


<ApiResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Data>
    <Sent>27164</Sent>
    <Bounced>985</Bounced>
    <Delivered>26179</Delivered>
    <Opens>1582</Opens>
    <UniqueOpens>1180</UniqueOpens>
    <Clicks>76</Clicks>
    <UniqueClicks>69</UniqueClicks>
    <Clickers>61</Clickers>
    <Complaints>6</Complaints>
    <Unsubscribes>219</Unsubscribes>
</Data>

【问题讨论】:

  • 没有人可以看到您的 XML 或转换后的 JSON 版本。您希望有人如何提供帮助?
  • 对不起,&lt;ApiResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt; &lt;Data&gt; &lt;Sent&gt;27164&lt;/Sent&gt; &lt;Bounced&gt;985&lt;/Bounced&gt; &lt;Delivered&gt;26179&lt;/Delivered&gt; &lt;Opens&gt;1582&lt;/Opens&gt; &lt;UniqueOpens&gt;1180&lt;/UniqueOpens&gt; &lt;Clicks&gt;76&lt;/Clicks&gt; &lt;UniqueClicks&gt;69&lt;/UniqueClicks&gt; &lt;Clickers&gt;61&lt;/Clickers&gt; &lt;Complaints&gt;6&lt;/Complaints&gt; &lt;Unsubscribes&gt;219&lt;/Unsubscribes&gt; &lt;/Data&gt; &lt;/ApiResponse&gt;
  • 添加 JSON 转换版本。生成的 JavaScript 对象就是问题所在。该错误意味着您期望成为数组的东西不是数组。
  • 这只是一项,不是列表。
  • 这是因为数据不是数组或集合。它不能被迭代

标签: javascript json xml api


【解决方案1】:

考虑使用您已经构建的 DOM,这里不需要 JSON。使用您已有的对象。

这是一个使用 XPath 解析 XML 以构建表格行和单元格的快速示例。

function getAPIResult(strURL) {
    let apiresult = document.querySelector("#apiresult tbody");
    if (apiresult == null) {
        return;
    }

    fetch(strURL)
        .then(response => {
            if (response.ok)
                return response.text();
            else 
                throw Error("Error: " + response.url + " " + response.status + " " + response.statusText);
        })
        .then(content => new window.DOMParser().parseFromString(content, "text/xml"))
        .then(xml => {
            var ndList = xml.evaluate("//Data/*", xml, null, XPathResult.ANY_TYPE, null);
            while (ndElement = ndList.iterateNext()) {
                var ndRow = document.createElement("tr");
                var ndCell = document.createElement("td");
                ndCell.innerText = ndElement.textContent;
                ndRow.appendChild(ndCell);
                apiresult.appendChild(ndRow);
            }
        })
        .catch(error => {
            console.log(error);
        });
}

【讨论】:

    猜你喜欢
    • 2017-03-07
    • 2014-12-06
    • 2011-10-08
    • 1970-01-01
    • 2023-03-24
    • 2021-10-31
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多