0
我想从xml文件中使用xpath节点js来检索信息作为变量以便稍后使用信息以几张表的形式我尝试这一小段代码,但是我出现以下错误。我把所有的代码和附加文件:node js xpath解析html表
滴度
滴度
<p>
<FONT COLOR="blue" SIZE='+2'>
<B><U>
blabkbkba </U></B>
</FONT>
</p>
<p>
<FONT COLOR="red" SIZE='+2'>
<B> font </B>
</FONT>
</p>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0">
<TR bgcolor="#DCDCDC">
<TD><B> info1 </B></TD><TD><B> info2 </B></TD><TD><B> info3 </B></TD>
<TD><B> info4 </B></TD><TD><B> info4 </B></TD><TD><B> info5 </B></TD>
<TD><B> info6 </B></TD><TD><B> info7 </B></TD><TD><B> info7 </B></TD>
<TD><B> info8 </B></TD><TD><B> info9 </B></TD><TD><B> info10</B></TD>
<TD><B> info11 </B></TD><TD><B> info12</B></TD>
</TR>
<TR bgcolor="#B0C4DE">
<TD><B> info11 </B></TD><TD><B> info21 </B></TD><TD><B> info31 </B></TD>
<TD><B> info41 </B></TD><TD><B> info41 </B></TD><TD><B> info51 </B></TD>
<TD><B> info61 </B></TD><TD><B> info71 </B></TD><TD><B> info71 </B></TD>
<TD><B> info81 </B></TD><TD><B> info91 </B></TD><TD><B> info101</B></TD>
<TD><B> info111 </B></TD><TD><B> info121</B></TD>
</TR>
</TABLE>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0">
<TR bgcolor="#DCDCDC">
<TD><B> info1 </B></TD><TD><B> info2 </B></TD><TD><B> info3 </B></TD>
<TD><B> info4 </B></TD><TD><B> info4 </B></TD><TD><B> info5 </B></TD>
<TD><B> info6 </B></TD><TD><B> info7 </B></TD><TD><B> info7 </B></TD>
<TD><B> info8 </B></TD><TD><B> info9 </B></TD><TD><B> info10</B></TD>
<TD><B> info11 </B></TD><TD><B> info12</B></TD>
</TR>
<TR bgcolor="#B0C4DE">
<TD><B> info11 </B></TD><TD><B> info21 </B></TD><TD><B> info31 </B></TD>
<TD><B> info41 </B></TD><TD><B> info41 </B></TD><TD><B> info51 </B></TD>
<TD><B> info61 </B></TD><TD><B> info71 </B></TD><TD><B> info71 </B></TD>
<TD><B> info81 </B></TD><TD><B> info91 </B></TD><TD><B> info101</B></TD>
<TD><B> info111 </B></TD><TD><B> info121</B></TD>
</TR>
</TABLE>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0">
<TR bgcolor="#DCDCDC">
<TD><B> info1 </B></TD><TD><B> info2 </B></TD><TD><B> info3 </B></TD>
<TD><B> info4 </B></TD><TD><B> info4 </B></TD><TD><B> info5 </B></TD>
<TD><B> info6 </B></TD><TD><B> info7 </B></TD><TD><B> info7 </B></TD>
<TD><B> info8 </B></TD><TD><B> info9 </B></TD><TD><B> info10</B></TD>
<TD><B> info11 </B></TD><TD><B> info12</B></TD>
</TR>
<TR bgcolor="#B0C4DE">
<TD><B> info11 </B></TD><TD><B> info21 </B></TD><TD><B> info31 </B></TD>
<TD><B> info41 </B></TD><TD><B> info41 </B></TD><TD><B> info51 </B></TD>
<TD><B> info61 </B></TD><TD><B> info71 </B></TD><TD><B> info71 </B></TD>
<TD><B> info81 </B></TD><TD><B> info91 </B></TD><TD><B> info101</B></TD>
<TD><B> info111 </B></TD><TD><B> info121</B></TD>
</TR>
</TABLE>
<p>
<a href="info.jsp">info</a>
</p>
这里是你可以帮助我理解我的错误,我使用的第一rtmeps来尝试恢复TD内容的代码:我有这样的反应
var fs = require('fs'),
xpath = require('xpath'),
dom = require('xmldom').DOMParser,
promise = require('promise');
function loadDistantFile (url) {
return new Promise(function (resolve, reject) {
fs.readFile(url, 'utf8', function (err, data) {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
}
loadDistantFile('./CrewSchedulejspShort.htm').then(function (content) {
var doc = new dom().parseFromString(content);
var nodes = xpath.select("//TABLE", doc);
for (i = 0; i < nodes.length; i++) {
var tr = xpath.select(nodes[i], "//TR").data;
var td = xpath.select(tr[0], "//TD"[0]).data;
console.log('td = '+td);
}
console.log(nodes[1].toString());
//console.log("Node: " + nodes[0].toString())
}).catch(function (err) {
console.error('Erreur !');
console.dir(err);
});
:
ERREUR!
Error: XPath parse error
at XPathParser.parse (/Users/user/Desktop/lire html/node_modules/xpath/xpath.js:1185:11)
at new XPathExpression (/Users/user/Desktop/lire html/node_modules/xpath/xpath.js:4278:17)
at Object.exports.selectWithResolver (/Users/user/Desktop/lire html/node_modules/xpath/xpath.js:4699:19)
at Object.exports.select (/Users/user/Desktop/lire html/node_modules/xpath/xpath.js:4682:17)
at /Users/user/Desktop/lire html/app.js:31:24
user:lire html user$
感谢您的帮助,但我如何恢复不同的数组,然后不同的tr和td来正确恢复所有信息? – user3210174
您必须像获取“// TABLE”('var nodes')一样获取新数组,然后您将不得不运行另一个“for循环” –