0

java-script を使用して XML ファイルを解析しようとしています。実際、XML ファイルからデータを正しく解析する方法を見つけるために多くのチュートリアルを読んだところ、正しい方法であることがわかりました。loadXMLDoc(dname) 関数に関しては、次のように XML ファイルのパスを loadXMLDoc 関数に渡しました。

var dname = "D:\files\files\Schriftsteller.xml";
function loadXMLDoc(dname)

しかし、まだ解析しても目的の結果が得られません。次のタグに名前を表示したい

<name>Jane Austin</name>

Chrome を使用していますが、Web ブラウザでは表示されません。お願いします (1) 私の間違いを教えてください。(2)パーサーファイルを保存する拡張子(.HTML/.js)

以下の XML ファイルと Java スクリプト ファイルを見つけてください。

XML ファイル:

<?xml version="1.0" ?>
  <Schriftsteller>
     <Englischsprache>
        <Dichtung> 
       <fueller>
       <name>Jane Austin</name>
               <name>Rex Stout</name>
               <name>Dashiell Hammett</name>    
       </fueller>
    </Dichtung>
</Englischsprache>
  </Schriftsteller>

JavaScript File.html(パーサー):

    <html>
    <head>
    <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
    <meta content="utf-8" http-equiv="encoding">   
       <link rel="stylesheet" href="readXML.css" type="text/css">
       <title>Read First Child</title>

        <!-- <xml ID="Schriftsteller" SRC="D:\files\files\Schriftsteller.xml"></xml> -->
        <script language="JavaScript">

         var dname = "D:\files\files\Schriftsteller.xml";
         function loadXMLDoc(dname)
              {
                 var xmlDoc;
                 if (window.XMLHttpRequest)
                 {
                  xmlDoc=new window.XMLHttpRequest();
                  xmlDoc.open("GET",dname,false);
                  xmlDoc.send();
                  return xmlDoc.responseXML;
                 }
                 // IE 5 and IE 6
                  else if (ActiveXObject("Microsoft.XMLDOM"))
                  {
                   xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
                   xmlDoc.async=false;
                   xmlDoc.load(dname);
                   return xmlDoc;
                  }
                    alert("Error loading document!");
                    return null;
              }

              function findWriter() 
              {
                 var schriftstellerKnoten, SpracheKnoten;
                 var FuellerKnoten, DichtungKnoten, Anzeige;

                 myXML = document.all(dname).XMLDocumentalert(dname);

                 SchriftstellerKnoten = myXML.documentElement;
                 SpracheKnoten = SchriftstellerKnoten.firstChild;
                 DichtungKnoten = SpracheKnoten.firstChild;
                 FuellerKnoten = DichtungKnoten.firstChild;
                 NameNode = FuellerKnoten.firstChild;
                 Anzeige = NameNode.firstChild.nodeValue;
                 document.write(Anzeige);
              }
           </script>
  </head>
  <body onload="loadXMLDoc(dname)">
  <span ID="blueBack">Read firstChild</span>
  <div>
  <form name="show">
  <input type=text name="me">
  <input type="button" value="Display Writer"
      onClick="findWriter()">
  </form>
  </div>
 </body>

4

1 に答える 1

1

まず、XML ドキュメントは整形式でなければなりません。

そのため、開いたタグごとに別のタグを追加して閉じます (名前タグの場合と同様)。/終了タグは、最初の a を除いて、開始タグと同じでなければなりません

また、大文字と小文字を区別する必要があります (整形式の XML では大文字と小文字が区別されます)。タグ

<EnglischSprache>とは異なります<Englischsprache>

次のようにしてみてください。

<?xml version="1.0"?>
<Schriftsteller>
  <EnglischSprache>
    <Dichtung> 
      <fueller>
        <name>Jane Austin</name>
        <name>Rex Stout</name>
        <name>Dashiell Hammett</name>    
      </fueller>
    </Dichtung> 
  </EnglischSprache>
</Schriftsteller>

次に、JS ファイルで、関数 loadXMLDoc を呼び出してみてください。

定義しているだけのようです。

次のようにしてみてください。

<body onload="loadXMLDoc(dname)">

今はまし?

于 2013-07-23T12:09:52.233 に答える