2017-06-09 75 views
0

我正在尝试构建日语学习指南。我从here以XML格式下载了一个巨大的日文英文字典文件。它大约有300万行代码。使用JavaScript搜索XML文件

下面是从文件中的示例项:

<JMdict> 
    <entry> 
     <ent_seq>1000110</ent_seq> 
     <k_ele> 
      <keb>CDプレーヤー</keb> 
      <ke_pri>spec1</ke_pri> 
     </k_ele> 
     <k_ele> 
      <keb>CDプレイヤー</keb> 
     </k_ele> 
     <r_ele> 
      <reb>シーディープレーヤー</reb> 
      <re_restr>CDプレーヤー</re_restr> 
      <re_pri>spec1</re_pri> 
     </r_ele> 
     <r_ele> 
      <reb>シーディープレイヤー</reb> 
      <re_restr>CDプレイヤー</re_restr> 
     </r_ele> 
     <sense> 
      <pos>&n;</pos> 
      <gloss>CD player</gloss> 
     </sense> 
    </entry> 
</JMdict> 

我不是太熟悉如何使用XML。我希望能够搜索文件并返回条目信息。 <keb><reb>将会是日文术语,并且<gloss>是英文意思。有多个<keb><reb>,因为有多种方式来说和拼写相同的单词。如果有人可以告诉我一个简单的方法来搜索在输入框中输入英文单词,并使用正则表达式在<gloss>中搜索每个<entry>的匹配项,这足以让我获得项目滚动。我只想输入一个英文单词并返回相应的日语。

+0

如果我没有记错的话,jQuery非常简单。你只需将它传递给你的XML,它就成为一个jQuery对象。像'var $ xml = $(xmldata); $ xml.find( “ent_seq”); $ xml.find(“entry”)。find(“re_pri”)' –

+0

[如何使用Javascript从XML文档中提取值]的可能重复(https://stackoverflow.com/questions/5415452/how-to- extract-values-from-an-xml-document-using-javascript)和[here](https://stackoverflow.com/questions/10684145/how-to-retrieve-xml-data-from-javascript) – Sandman

回答

0
var xml = document.createElement("div"); 
xml.innerHTML = "<JMdict><entry><ent_seq>1000110</ent_seq><k_ele><keb>CDプレーヤー</keb><ke_pri>spec1</ke_pri></k_ele><k_ele><keb>CDプレイヤー</keb></k_ele><r_ele><reb>シーディープレーヤー</reb><re_restr>CDプレーヤー</re_restr><re_pri>spec1</re_pri></r_ele><r_ele><reb>シーディープレイヤー</reb><re_restr>CDプレイヤー</re_restr></r_ele><sense><pos>&n;</pos><gloss>CD player</gloss></sense></entry></JMdict>" 

//xml.innerHTML = url xml 

xml.querySelector("keb").innerText // will give value in first keb 
xml.querySelector("reb").innerText // will give you first reb 
xml.querySelector("gloss").innerText // will give you gloss 

use querySelectorAll("keb")[0/1] to access specific keb. 
Or write any query you want like 
xml.querySelector("k_ele keb") // keb inside k_ele 
xml.querySelector("r_ele re_pri").innerText // returns "spec1"