主頁 > 區塊鏈 > 如何將atom/xml型別的回應輸出到JqueryDataTable中?

如何將atom/xml型別的回應輸出到JqueryDataTable中?

2022-06-15 07:52:53 區塊鏈

如何將 atom/xml feed 型別的回應(來自 arxiv 呼叫)輸出到 Jquery DataTable 中?

我的資料表適用于從 Ajax 呼叫到燒瓶服務器示例的簡單 json。

當我嘗試使用來自 arxiv api 回應的 xml 來執行此操作時,我似乎無法讓它顯示在資料表中(盡管我可以使用<pre lang="xml" >或 json 列印原始 xml)。

我還嘗試首先通過python字典轉換為json,但仍然無法將其格式化為資料表,因為我不確定當它們比鏈接的基本示例中的第一級更深時如何在Ajax呼叫中正確訪問屬性。

模板中的 HTML:

<table id="arxivtable" class="display" style="width:100%">
  <thead>
      <tr>
          <th>title</th>
          <th>id</th>
          <th>link</th>
          <th>author</th>
          <th>published</th>
      </tr>
  </thead>
</table>

我通過 xml 嘗試過:

  $('#arxivtable').DataTable({
            "ajax": {
                // "url": "static/objects2.txt", // This works for the static file
                "url": "/get_arxivpapers", // This now works too thanks to @kthorngren
                "dataType": "xml",
                "type":"GET",
                "dataSrc": "{{name}}",
                "contentType":"application/atom xml"
            },
            "columns": [
                {"data": "title"},
                {
                        "data": "link",
                        "render": function(data, type, row, meta){
                           if(type === 'display'){
                               data = '<a href="'   data   '">'   data   '</a>';
                           }

                           return data;
                        }
                      },
                      { "data": "id" },
                      { "data": "link" },
                       { "data": "author" },
                       { "data": "journal" },
                       { "data": "published" },
                       { "data": "summary" }

            ]
            });

來自 AJAX 呼叫的 JSON:

    {
  "feed": {
    "@xmlns": "http://www.w3.org/2005/Atom",
    "link": {
      "@href": "http://arxiv.org/api/query?search_query=all:einstein&id_list=&start=0&max_results=2",
      "@rel": "self",
      "@type": "application/atom xml"
    },
    "title": {
      "@type": "html",
      "#text": "ArXiv Query: search_query=all:einstein&id_list=&start=0&max_results=2"
    },
    "id": "http://arxiv.org/api/vehKAQR bheXtHwJw3qx/OG/XXw",
    "updated": "2022-06-14T00:00:00-04:00",
    "opensearch:totalResults": {
      "@xmlns:opensearch": "http://a9.com/-/spec/opensearch/1.1/",
      "#text": "36970"
    },
    "opensearch:startIndex": {
      "@xmlns:opensearch": "http://a9.com/-/spec/opensearch/1.1/",
      "#text": "0"
    },
    "opensearch:itemsPerPage": {
      "@xmlns:opensearch": "http://a9.com/-/spec/opensearch/1.1/",
      "#text": "2"
    },
    "entry": [
      {
        "id": "http://arxiv.org/abs/1801.05533v2",
        "updated": "2018-11-22T14:04:43Z",
        "published": "2018-01-17T03:05:51Z",
        "title": "Einstein-Weyl structures on almost cosymplectic manifolds",
        "summary": "",
        "author": {
          "name": "Xiaomin Chen"
        },
        "arxiv:comment": {
          "@xmlns:arxiv": "http://arxiv.org/schemas/atom",
          "#text": "accepted by Periodica Mathematica Hungarica, 14 pages, no figures"
        },
        "link": [
          {
            "@href": "http://arxiv.org/abs/1801.05533v2",
            "@rel": "alternate",
            "@type": "text/html"
          },
          {
            "@title": "pdf",
            "@href": "http://arxiv.org/pdf/1801.05533v2",
            "@rel": "related",
            "@type": "application/pdf"
          }
        ],
        "arxiv:primary_category": {
          "@xmlns:arxiv": "http://arxiv.org/schemas/atom",
          "@term": "math.DG",
          "@scheme": "http://arxiv.org/schemas/atom"
        },
        "category": [
          {
            "@term": "math.DG",
            "@scheme": "http://arxiv.org/schemas/atom"
          },
          {
            "@term": "53D10, 53D15",
            "@scheme": "http://arxiv.org/schemas/atom"
          }
        ]
      },
      {
        "id": "http://arxiv.org/abs/0802.2137v3",
        "updated": "2008-04-01T04:36:21Z",
        "published": "2008-02-15T04:40:56Z",
        "title": "",
        "summary": ".",
        "author": {
          "name": ""
        },
        "arxiv:comment": {
          "@xmlns:arxiv": "http://arxiv.org/schemas/atom",
          "#text": "18 pages, added Theorem 5"
        },
        "link": [
          {
            "@href": "http://arxiv.org/abs/0802.2137v3",
            "@rel": "alternate",
            "@type": "text/html"
          },
          {
            "@title": "pdf",
            "@href": "http://arxiv.org/pdf/0802.2137v3",
            "@rel": "related",
            "@type": "application/pdf"
          }
        ],
        "arxiv:primary_category": {
          "@xmlns:arxiv": "http://arxiv.org/schemas/atom",
          "@term": "math.DG",
          "@scheme": "http://arxiv.org/schemas/atom"
        },
        "category": [
          {
            "@term": "math.DG",
            "@scheme": "http://arxiv.org/schemas/atom"
          },
          {
            "@term": "53C30; 53C25",
            "@scheme": "http://arxiv.org/schemas/atom"
          }
        ]
      }
    ]
  }
}

或原始 atom/xml:

<feed xmlns="http://www.w3.org/2005/Atom">
  <link href="http://arxiv.org/api/query?search_query=all:einstein&id_list=&start=0&max_results=2" rel="self" type="application/atom xml">
  <title type="html">ArXiv Query: search_query=all:einstein&amp;id_list=&amp;start=0&amp;max_results=2</title>
  <id>http://arxiv.org/api/vehKAQR bheXtHwJw3qx/OG/XXw</id>
  <updated>2022-06-14T00:00:00-04:00</updated>
  <opensearch:totalresults xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/">36970</opensearch:totalresults>
  <opensearch:startindex xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/">0</opensearch:startindex>
  <opensearch:itemsperpage xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/">2</opensearch:itemsperpage>
  <entry>
    <id>http://arxiv.org/abs/1801.05533v2</id>
    <updated>2018-11-22T14:04:43Z</updated>
    <published>2018-01-17T03:05:51Z</published>
    <title></title>
    <summary> 
</summary>
    <author>
      <name></name>
    </author>
    <arxiv:comment xmlns:arxiv="http://arxiv.org/schemas/atom">accepted by Periodica Mathematica Hungarica, 14 pages, no figures</arxiv:comment>
    <link href="http://arxiv.org/abs/1801.05533v2" rel="alternate" type="text/html">
    <link title="pdf" href="http://arxiv.org/pdf/1801.05533v2" rel="related" type="application/pdf">
    <arxiv:primary_category xmlns:arxiv="http://arxiv.org/schemas/atom" term="math.DG" scheme="http://arxiv.org/schemas/atom">
    <category term="math.DG" scheme="http://arxiv.org/schemas/atom">
    <category term="53D10, 53D15" scheme="http://arxiv.org/schemas/atom">
  </category></category></arxiv:primary_category></entry>
  <entry>
    <id>http://arxiv.org/abs/0802.2137v3</id>
    <updated>2008-04-01T04:36:21Z</updated>
    <published>2008-02-15T04:40:56Z</published>
    <title></title>
    <summary>
</summary>
    <author>
      <name></name>
    </author>
    <arxiv:comment xmlns:arxiv="http://arxiv.org/schemas/atom"></arxiv:comment>
    <link href="http://arxiv.org/abs/0802.2137v3" rel="alternate" type="text/html">
    <link title="pdf" href="http://arxiv.org/pdf/0802.2137v3" rel="related" type="application/pdf">
    <arxiv:primary_category xmlns:arxiv="http://arxiv.org/schemas/atom" term="math.DG" scheme="http://arxiv.org/schemas/atom">
    <category term="math.DG" scheme="http://arxiv.org/schemas/atom">
    <category term="53C30; 53C25" scheme="http://arxiv.org/schemas/atom">
  </category></category></arxiv:primary_category></entry>
</feed>

終點:

@app.route('/get_arxivpapers')
def getArxivPapers(name="einstein"):

    max_results = 2
    searchterm = name.replace("_", "&#32")
    url = 'http://export.arxiv.org/api/query?search_query=all:'   searchterm   '&start=0&'   'max_results='  str(max_results)
    data = urllib.request.urlopen(url)

    # data_dict = xmltodict.parse(data)
    # json_data = json.dumps(data_dict)
    # print(json_data)
    # return jsonify(json_data)

    return data.read().decode('utf-8')

uj5u.com熱心網友回復:

我將使用您的 JSON 源資料而不是 XML,因為這在 DataTables 中更容易處理。

這是一個基本的演示,首先是一些解釋性說明:

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Demo</title>

  <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
  <script src="https://cdn.datatables.net/1.10.21/js/jquery.dataTables.min.js"></script>
  <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.21/css/jquery.dataTables.min.css">
</head>

<body>

<div style="margin: 20px;">

    <table id="arxivtable" class="display" style="width:100%">
  <thead>
      <tr>
          <th>title</th>
          <th>id</th>
          <th>link</th>
          <th>author</th>
          <th>published</th>
          <th>summary</th>
      </tr>
  </thead>
</table>


</div>

<script type="text/javascript">
    
  $(document).ready(function(){

    $('#arxivtable').DataTable({
      "ajax": {
        url: "YOUR_URL_GOES_HERE",
        dataSrc: "feed.entry"
      },
      "columns": [
        {"data": "title"},
        { "data": "id" },
        { "data": "link[].@href" },
        { "data": "author.name" },
        { "data": "published" },
        { "data": "summary" }
      ]
    });
    
  });

</script>


</body>
</html>

筆記

1 - 因為您提供了硬編碼的 HTML 列標題,所以您需要確保這些標題的數量與 DataTable 中定義的列數相匹配。或者,您可以洗掉 HTML<thead>部分并使用 DataTablescolumns.title選項。

2 - 您的 Ajax JSON 源資料包含一個陣列[ ... ]作為 Ajax 處理選項的一部分,DataTables 需要知道該陣列在您的 JSON 回應中的位置,以便它可以遍歷該陣列。陣列中的每個元素都將用于創建一行 HTML 表格資料。ajax.dataSrc因此需要相應地設定該選項:

dataSrc: "feed.entry"

正確設定上述 Ajax JSON 起點后,您可以為每個單獨的列data值使用欄位名稱 - 如下所示。

3 - authorJSON 值實際上是一個物件:

"author": {
  "name": "Xiaomin Chen"
},

因此,您需要深入研究以獲取要在 DataTable 中顯示的欄位:

{ "data": "author.name" },

4 - 我洗掉了您的列渲染器功能以保持我的初始演示簡單,但它可用于訪問欄位和子欄位 - 并根據需要連接字串和其他值(如問題中的示例)。

5 - linkJSON 值實際上是一個物件陣列。對于我的基本演示,我剛剛訪問了該陣列中的最后一個條目,然后獲取了 href 欄位:

{ "data": "link[].@href" },

這可能不是你想要的。您可能只想選擇某種型別的鏈接,或者選擇所有鏈接,或者其他不同的鏈接。

這就是 DataTables 的處理能力有限的地方。它不能顯示這種型別的任意嵌套 JSON 值(不足為奇)。

在這種情況下,您需要在將 JSON 發送到 DataTables 之前重新構造它 - 或者在 DataTables 本身內部的dataSrc函式中重新構造它:

"dataSrc": function ( json ) { ...transform and return your JSON here... }

6 - 我不確定你想顯示什么{ "data": "journal" }我沒有看到journalJSON 中呼叫的任何內容。

7 - 請注意,feed.entry陣列之外的所有源 JSON 資料也對 DataTables 不可用。DataTables 只能迭代該外部陣列。您可能還需要不在該外部陣列中的任何內容都需要添加到陣列中,以便 DataTables 可以訪問。


有關更多相關說明,另請參閱嵌套物件資料(陣列)嵌套物件資料(物件)

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/490934.html

標籤:json xml 烧瓶 数据表 原子进料

上一篇:如何回圈使用多個物件的json資料

下一篇:為什么if和else兩個條件在JavaScript中同時執行?If和Else條件

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • JAVA使用 web3j 進行token轉賬

    最近新學習了下區塊鏈這方面的知識,所學不多,給大家分享下。 # 1. 關于web3j web3j是一個高度模塊化,反應性,型別安全的Java和Android庫,用于與智能合約配合并與以太坊網路上的客戶端(節點)集成。 # 2. 準備作業 jdk版本1.8 引入maven <dependency> < ......

    uj5u.com 2020-09-10 03:03:06 more
  • 以太坊智能合約開發框架Truffle

    前言 部署智能合約有多種方式,命令列的瀏覽器的渠道都有,但往往跟我們程式員的風格不太相符,因為我們習慣了在IDE里寫了代碼然后打包運行看效果。 雖然現在IDE中已經存在了Solidity插件,可以撰寫智能合約,但是部署智能合約卻要另走他路,沒辦法進行一個快捷的部署與測驗。 如果團隊管理的區塊節點多、 ......

    uj5u.com 2020-09-10 03:03:12 more
  • 谷歌二次驗證碼成為區塊鏈專用安全碼,你怎么看?

    前言 谷歌身份驗證器,前些年大家都比較陌生,但隨著國內互聯網安全的加強,它越來越多地出現在大家的視野中。 比較廣泛接觸的人群是國際3A游戲愛好者,游戲盜號現象嚴重+國外賬號安全應用廣泛,這類游戲一般都會要求用戶系結名為“兩步驗證”、“雙重驗證”等,平臺一般都推薦用谷歌身份驗證器。 后來區塊鏈業務風靡 ......

    uj5u.com 2020-09-10 03:03:17 more
  • 密碼學DAY1

    目錄 ##1.1 密碼學基本概念 密碼在我們的生活中有著重要的作用,那么密碼究竟來自何方,為何會產生呢? 密碼學是網路安全、資訊安全、區塊鏈等產品的基礎,常見的非對稱加密、對稱加密、散列函式等,都屬于密碼學范疇。 密碼學有數千年的歷史,從最開始的替換法到如今的非對稱加密演算法,經歷了古典密碼學,近代密 ......

    uj5u.com 2020-09-10 03:03:50 more
  • 密碼學DAY1_02

    目錄 ##1.1 ASCII編碼 ASCII(American Standard Code for Information Interchange,美國資訊交換標準代碼)是基于拉丁字母的一套電腦編碼系統,主要用于顯示現代英語和其他西歐語言。它是現今最通用的單位元組編碼系統,并等同于國際標準ISO/IE ......

    uj5u.com 2020-09-10 03:04:50 more
  • 密碼學DAY2

    ##1.1 加密模式 加密模式:https://docs.oracle.com/javase/8/docs/api/javax/crypto/Cipher.html ECB ECB : Electronic codebook, 電子密碼本. 需要加密的訊息按照塊密碼的塊大小被分為數個塊,并對每個塊進 ......

    uj5u.com 2020-09-10 03:05:42 more
  • NTP時鐘服務器的特點(京準電子)

    NTP時鐘服務器的特點(京準電子) NTP時鐘服務器的特點(京準電子) 京準電子官V——ahjzsz 首先對時間同步進行了背景介紹,然后討論了不同的時間同步網路技術,最后指出了建立全球或區域時間同步網存在的問題。 一、概 述 在通信領域,“同步”概念是指頻率的同步,即網路各個節點的時鐘頻率和相位同步 ......

    uj5u.com 2020-09-10 03:05:47 more
  • 標準化考場時鐘同步系統推進智能化校園建設

    標準化考場時鐘同步系統推進智能化校園建設 標準化考場時鐘同步系統推進智能化校園建設 安徽京準電子科技官微——ahjzsz 一、背景概述隨著教育事業的快速發展,學校建設如雨后春筍,隨之而來的學校教育、管理、安全方面的問題成了學校管理人員面臨的最大的挑戰,這些問題同時也是學生家長所擔心的。為了讓學生有更 ......

    uj5u.com 2020-09-10 03:05:51 more
  • 位元幣入門

    引言 位元幣基本結構 位元幣基礎知識 1)哈希演算法 2)非對稱加密技術 3)數字簽名 4)MerkleTree 5)哪有位元幣,有的是UTXO 6)位元幣挖礦與共識 7)區塊驗證(共識) 總結 引言 上一篇我們已經知道了什么是區塊鏈,此篇說一下區塊鏈的第一個應用——位元幣。其實先有位元幣,后有的區塊 ......

    uj5u.com 2020-09-10 03:06:15 more
  • 北斗對時服務器(北斗對時設備)電力系統應用

    北斗對時服務器(北斗對時設備)電力系統應用 北斗對時服務器(北斗對時設備)電力系統應用 京準電子科技官微(ahjzsz) 中國北斗衛星導航系統(英文名稱:BeiDou Navigation Satellite System,簡稱BDS),因為是目前世界范圍內唯一可以大面積提供免費定位服務的系統,所以 ......

    uj5u.com 2020-09-10 03:06:20 more
最新发布
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:46:47 more
  • Hyperledger Fabric 使用 CouchDB 和復雜智能合約開發

    在上個實驗中,我們已經實作了簡單智能合約實作及客戶端開發,但該實驗中智能合約只有基礎的增刪改查功能,且其中的資料管理功能與傳統 MySQL 比相差甚遠。本文將在前面實驗的基礎上,將 Hyperledger Fabric 的默認資料庫支持 LevelDB 改為 CouchDB 模式,以實作更復雜的資料... ......

    uj5u.com 2023-04-16 07:28:31 more
  • .NET Core 波場鏈離線簽名、廣播交易(發送 TRX和USDT)筆記

    Get Started NuGet You can run the following command to install the Tron.Wallet.Net in your project. PM> Install-Package Tron.Wallet.Net 配置 public reco ......

    uj5u.com 2023-04-14 08:08:00 more
  • DKP 黑客分析——不正確的代幣對比率計算

    概述: 2023 年 2 月 8 日,針對 DKP 協議的閃電貸攻擊導致該協議的用戶損失了 8 萬美元,因為 execute() 函式取決于 USDT-DKP 對中兩種代幣的余額比率。 智能合約黑客概述: 攻擊者的交易:0x0c850f,0x2d31 攻擊者地址:0xF38 利用合同:0xf34ad ......

    uj5u.com 2023-04-07 07:46:09 more
  • Defi開發簡介

    Defi開發簡介 介紹 Defi是去中心化金融的縮寫, 是一項旨在利用區塊鏈技術和智能合約創建更加開放,可訪問和透明的金融體系的運動. 這與傳統金融形成鮮明對比,傳統金融通常由少數大型銀行和金融機構控制 在Defi的世界里,用戶可以直接從他們的電腦或移動設備上訪問廣泛的金融服務,而不需要像銀行或者信 ......

    uj5u.com 2023-04-05 08:01:34 more
  • solidity簡單的ERC20代幣實作

    // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; import "hardhat/console.sol"; //ERC20 同質化代幣,每個代幣的本質或性質都是相同 //ETH 是原生代幣,它不是ERC20代幣, ......

    uj5u.com 2023-03-21 07:56:29 more
  • solidity 參考型別修飾符memory、calldata與storage 常量修飾符C

    在solidity語言中 參考型別修飾符(參考型別為存盤空間不固定的數值型別) memory、calldata與storage,它們只能修飾參考型別變數,比如字串、陣列、位元組等... memory 適用于方法傳參、返參或在方法體內使用,使用完就會清除掉,釋放記憶體 calldata 僅適用于方法傳參 ......

    uj5u.com 2023-03-08 07:57:54 more
  • solidity注解標簽

    在solidity語言中 注釋符為// 注解符為/* 內容*/ 或者 是 ///內容 注解中含有這幾個標簽給予我們使用 @title 一個應該描述合約/介面的標題 contract, library, interface @author 作者的名字 contract, library, interf ......

    uj5u.com 2023-03-08 07:57:49 more
  • 評價指標:相似度、GAS消耗

    【代碼注釋自動生成方法綜述】 這些評測指標主要來自機器翻譯和文本總結等研究領域,可以評估候選文本(即基于代碼注釋自動方法而生成)和參考文本(即基于手工方式而生成)的相似度. BLEU指標^[^?88^^?^]^:其全稱是bilingual evaluation understudy.該指標是最早用于 ......

    uj5u.com 2023-02-23 07:27:39 more
  • 基于NOSTR協議的“公有制”版本的Twitter,去中心化社交軟體Damus

    最近,一個幽靈,Web3的幽靈,在網路游蕩,它叫Damus,這玩意詮釋了什么叫做病毒式營銷,滑稽的是,一個Web3產品卻在Web2的產品鏈上瘋狂傳銷,各方大佬紛紛為其背書,到底發生了什么?Damus的葫蘆里,賣的是什么藥? 注冊和簡單實用 很少有什么產品在用戶注冊環節會有什么噱頭,但Damus確實出 ......

    uj5u.com 2023-02-05 06:48:39 more