我有一个带有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>
&#13;
我加载这个html文件的c ++代码是:
tinyxml2::XMLDocument xmlDoc;
tinyxml2::XMLError err = xmlDoc.LoadFile("abc.html");
现在err
的错误代码为XML_ERROR_PARSING_ELEMENT
。
我想要做什么这个HTML文件是在<ul>
标记下找到一个特定标记<body>
,并希望在该标记内添加更多项目。
请让我知道它为什么会出错,我该怎么办呢。
答案 0 :(得分:1)
这一行是你的问题:
year groups element budgetFebruary actualFebruary varianceFebruary percentFebruary budgetJanuary actualJanuary varianceJanuary percentJanuary
2016 CCARE Basic 152.28 3.00 4.98 0.00 52.28 43.00 43.98 0.00
2016 CCARE Bonuses 12.77 1.10 -4.12 0.00 1.77 17.10 -46.12 .00
2016 CCARE Comminication 191.01 2.34 -1.98 0.00 19.01 27.34 -81.98 0.00
2016 CCARE HDMF 10.98 2.17 -2.98 0.00 0.98 22.17 -22.98 0.00
2016 CCARE Overtime 23.34 3.20 0.98 0.00 2.34 20.20 7.98 0.00
XML解析器将小于比较解释为元素的开头,但由于它后面没有合法的元素名称,解析器会因为它不常而惹恼你。
在 for(var i=0; i < oList.getElementsByTagName("ul").length; i++)
部分中包装脚本标记的内容;使用<![CDATA[]]>
转义它,或者翻转比较,使其成为<
。
>=
由于元素名称后面的空格可能也会导致问题,尽管它不应该。 (它是有效的XML,但不是每个解析器都完全兼容。)
修改强>
Garf指出;将XML和JS以及CSS分开是很好的,这正是原因。
您在XML序列化中需要的是:
<body >