0

我们如何在没有转义 HTML 标签的情况下从沃尔玛开放 API 中获得响应

示例:使用搜索 API 时,示例响应为

{
    "query": "ipod",
    "sort": "relevance",
    "responseGroup": "base",
    "totalResults": 257,
    "start": 1,
    "numItems": 10,
    "items": [{
        "itemId": 42608125,
        "parentItemId": 42608125,
        "name": "Apple iPod touch 32GB",
        "msrp": 247.0,
        "upc": "888462353151",
        "categoryPath": "Electronics/Portable Audio/Apple iPods/iPod Touch",
        "shortDescription": "The Apple iPod Touch 32GB is loaded with features. It is the ideal solution for carrying your music collection in your pocket. The device comes in five stunning colors, giving you plenty of options to choose from. Listen to your favorite songs from Apple Music and iTunes. It also offers the ultimate mobile gaming experience for versatility,
        "longDescription": **"<b><br>Apple iPod touch 32GB:</b><br><ul><li>Memory: 32 GB</li><li>Portable iPod touch has touchscreen controls</li><li>Bluetooth capable</li><li>Wireless LAN</li><li>Battery is built-in</li><li>4" retina display</li><li>1080p HD video recording</li><li>Up to 40 hours audio playback</li><li>8-hour video</li><li>8 Megapixel camera</li><li>Includes ear buds and charging cable</li><li>Available in Blue, Gold, Pink, White and Silver and Space Gray</li></ul>**",
}

在上面提到的 JSON 响应中,我想在获取响应时跳过 HTML 标记。

4

2 回答 2

0

这个简单的函数应该解码 html 实体,然后从您从该 API 获得的文本中去除 html 标记:

function stripHtmlEntities(str) {
    let decodedHtml = decodeEntities(str);
    let el = document.createElement('span');
    el.innerHTML = decodedHtml;
    return el.textContent || el.innerText;
}

更新:要node.js在没有 DOM 的情况下使用,您应该执行以下操作:

const jsdom = require("jsdom");
const { JSDOM } = jsdom;
const dom = new JSDOM(`<!DOCTYPE html>`);
const document = dom.window.document;

当然,这个解决方案并不像 Javascript 那样灵活,当然你可以找到更好的方法来去除 HTML ... :-)

于 2019-02-26T10:23:04.593 回答
0

您可以使用以下功能删除 html 标签 function strip_html_tags(str) { if (!str) return; else str = str.toString(); return str.replace(/&lt;[^&gt;]*&gt;/g, ''); }

于 2019-03-15T09:22:10.083 回答