0

我正在尝试使用 java 脚本解析 XML 文件。实际上,我阅读了很多教程来了解如何正确解析 XML 文件中的数据,并且我发现我的方法是正确的。关于 loadXMLDoc(dname) 函数,我将 XML 文件的路径传递给 loadXMLDoc 函数,如下所示:

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

但是解析仍然没有给我想要的结果,我想在下面的标签中显示名称

<name>Jane Austin</name>

但网络浏览器不显示它,我正在使用 Chrome。请,(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-File 中,也许你应该尝试调用函数 loadXMLDoc。

看起来你只是在定义它。

试试这样:

<body onload="loadXMLDoc(dname)">

现在好点了?

于 2013-07-23T12:09:52.233 回答