2017-06-09 5 views
0

Ich versuche, einen japanischen Studienführer zu bauen. Ich habe eine große japanische Wörterbuchdatei in XML von here heruntergeladen. Es sind ungefähr 3.000.000 Zeilen Code. HierDurchsuchen Sie eine XML-Datei mit Javascript

ist ein Beispiel Eintrag aus der Datei:

<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> 

Ich bin nicht allzu vertraut mit, wie XML zu verwenden. Ich möchte in der Lage sein, die Datei zu durchsuchen und die Eintragsinformationen zurückzugeben. <keb> und <reb> werden die japanischen Begriffe sein, und innerhalb <gloss> ist die englische Bedeutung. Es gibt mehrere <keb> und <reb>, weil es mehrere Möglichkeiten gibt, dasselbe Wort zu sagen und zu buchstabieren. Wenn jemand mir einfach eine einfache Möglichkeit geben könnte, das Wort in Englisch in einem Eingabefeld zu tippen und jede <entry> nach einer Übereinstimmung in <gloss> mit Regex zu durchsuchen, die für mich ausreichen würde, um das Projekt ins Rollen zu bringen. Ich möchte nur ein englisches Wort eingeben und das japanische Äquivalent zurückgeben.

+0

Wenn ich mich richtig erinnere, ist dies sehr einfach mit jQuery. Übergeben Sie einfach Ihr XML, wird es ein jQuery-Objekt. Etwas wie 'var $ xml = $ (xmldata); $ xml.find ("ent_seq"); $ xml.find ("entry"). find ("re_pri") ' –

+0

Mögliches Duplikat von [wie man Werte aus einem XML-Dokument mit Javascript extrahiert] (https://stackoverflow.com/questions/5415452/how-to- extract-values-from-xml-document-using-javascript) und [hier] (https://stackoverflow.com/questions/10684145/how-to-retrieve-xml-data-from-javascript) – Sandman

Antwort

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" 
Verwandte Themen