2016-06-20 5 views
1

私はそこにJavascriptを含むHTMLファイルを持っています。しかし、私はtinyXML2ライブラリを使ってこのHTMLファイルを読み込むことができません。それはエラーを出す。tinyXML2ライブラリを使用してJavaScriptを使用してHTMLファイルをロード

私のhtmlファイルはabc.htmlのようなものです:この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() 
 
\t { 
 
     for(var i=0; i < oList.getElementsByTagName("ul").length; i++) 
 
\t { 
 
     oList.getElementsByTagName("ul")[i].style.display="none";    
 
     }                 
 
     if(oList.addEventListener) 
 
\t { 
 
     oList.addEventListener("click", toggleBranch, false); 
 
     } 
 
\t else if(oList.attachEvent) 
 
\t { 
 
     oList.attachEvent("onclick", toggleBranch); 
 
     } 
 
     addLinksToBranches(oList); 
 
    } 
 
    </script> 
 
</head> 
 

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

と私のC++コードです:

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

errエラーコードXML_ERROR_PARSING_ELEMENTを持っています。

このHTMLファイルは、<ul>という特定のタグを見つけて、<body>タグの下にあり、そのタグの中にいくつかの項目を追加したいとします。

なぜエラーを出しているのか、どうやってそれをやり遂げることができるのか教えてください。

+0

我々はGarf365 @何 – Garf365

+0

を行うことができないエラーがなければ、エラーコードがXML_ERROR_ELEMENT_MISMATCHです。 –

+0

質問を編集して、私たち=>エラー、エラーを生成するHTMLスニペット、C++コード、...を助ける要素を追加してください。 – Garf365

答えて

1

このラインはあなたの問題です:

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

満たない比較は要素の開始として、XMLパーサによって解釈が、それが有効な要素名に続いていないことから、パーサは、フリークアウトされますあなたの上に死ぬ、そのようなことはありません。

<![CDATA[]]>セクションにスクリプトタグの内容をラップします。 &lt;を使用してエスケープするか、または比較をフリップして>=とします。

<body > 

要素名の後ろにスペースがあるために問題が発生することもありますが、そうではありません。 (これは、有効なXMLですが、すべてのパーサは完全に準拠していない。)

編集:

GARFが指摘するように、 XMLとJS、そしてCSSを分離することは良いことです。これが正確な理由です。あなたはXMLシリアル化になるでしょう何

は通常、このです:

<script type="text/javascript" src="myScript.js" /> 
+0

を使用した場合、私のHTMLファイルはtinyXML2ライブラリを使って正常にロードされています。 – Garf365

+0

@Williham Totlandは、XMLとjavascriptを別々のファイルに分けることをお勧めします。私はtinyXML2を使って特定のタグを見つける方法をもう一つ考えています。見つける方法はありますか?私はgrinningLizardsウェブサイトで特定のタグを見つけるための助けを得ていませんでした。 –

+0

@Brittonそれから別の質問をするのはおそらく行く方法です。 :) –

関連する問題