1

Javascript を含む HTML ファイルがあります。しかし、tinyXML2 ライブラリを使用してこの HTML ファイルを読み込むことができません。エラーを出しています。

私のhtmlファイルは次のようなものabc.htmlです:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  <title>HTML Course</title>
  <style type="text/css">
ul.LinkedList { display: block; }
/* ul.LinkedList ul { display: none; } */
.HandCursorStyle { cursor: pointer; cursor: hand; }  /* For IE */
  </style>

  <script type="text/JavaScript">
function addEvents() {
      activateTree(document.getElementById("LinkedList1"));
    }
    function activateTree() 
	{
       for(var i=0; i < oList.getElementsByTagName("ul").length; i++) 
	   {
        oList.getElementsByTagName("ul")[i].style.display="none";            
      }                                                                  
       if(oList.addEventListener) 
	   {
        oList.addEventListener("click", toggleBranch, false);
      }
	  else if(oList.attachEvent) 
	  { 
        oList.attachEvent("onclick", toggleBranch);
      }
       addLinksToBranches(oList);
    }
  </script>
</head>

	<body >
<ul id="LinkedList1" class="LinkedList">
  <li>History of WWW
    <ul>
      <li>Arpanet - Packets - 1969</li>
      <li>TCP/IP - Vinton Cerf - 1974</li>
      <li>WorldWideWeb (Internet and program) - Tim Berners Lee - 1991</li>
      <li>Public Domain WWW source code - 1993</li>
      <li>NCSA Mosaic released - 1993</li>
      <li>Opera released - 1994</li>
      <li>Marc Anderseen (formerly NCSA) and Jim Clark  release Netscape - 1994</li>
      <li>IE from Microsoft (based on Mosaic)
        <ul>
          <li>DHTML</li>
          <li>ActiveX</li>
        </ul>
      </li>
      <li>W3C at MIT (CERN, NCSA, EU)</li>
      <li>W3C Recommendations</li>
      <li>Mozilla Foundation</li>
    </ul>
  </li>

</ul>
</body>
</html>

このhtmlファイルをロードするための私のC ++コードは次のとおりです。

tinyxml2::XMLDocument xmlDoc;
tinyxml2::XMLError err =  xmlDoc.LoadFile("abc.html");

errエラーコードが表示されるようになりましたXML_ERROR_PARSING_ELEMENT

この HTML ファイルでやりたいことは、タグ<ul>の下にある特定のタグを見つけて、<body>そのタグ内にさらにいくつかの項目を追加することです。

エラーが発生する理由と、どうすればエラーが発生するかを教えてください。

4

1 に答える 1

1

この行はあなたの問題です:

       for(var i=0; i < oList.getElementsByTagName("ul").length; i++) 

小なり比較は、XML パーサーによって要素の開始として解釈されますが、その後に正当な要素名が続いていないため、パーサーは異常を起こし、通常どおりに停止します。

script タグの内容を<![CDATA[]]>セクションにラップします。を使用してエスケープする&lt;か、比較を反転して>=代わりに a にします。

    <body >

要素名の後のスペースが原因で問題が発生する可能性もありますが、そうすべきではありません。(有効な XML ですが、すべてのパーサーが完全に準拠しているわけではありません。)

編集:

ガーフが指摘するように。CSSだけでなく、XMLとJSを分離するのは良いことであり、これがまさにその理由です。

XMLシリアライゼーションで必要なのは、通常、次のとおりです。

<script type="text/javascript" src="myScript.js" />
于 2016-06-20T07:53:31.217 に答える