<table>
<tr>
<td id="a">
Battery
<td id ="b">
9
</tr>
<tr>
<td id="a">
Company
<td id="b">
APPLE
</tr>
<tr>....</tr>
我需要输出像这样的电池:9 ^ Comapany:Apple。我正在学习xpath可以任何人建议我如何做到这一点。
答案 0 :(得分:3)
使用XPath 2.0,您可以执行以下操作:
fn:string-join(for $tr in //tr return fn:string-join($tr/td/text(),':'), '^')
在您的评论后更新: .NET Framework不直接支持XPath 2.0,我不相信使用1.0可以轻松满足您的要求。您可以查看一些third-party librarie。
或者,如果您只是在寻找C#解决方案,那么就不需要在这里使用XPath,LINQ to XML就足够了:
var xDoc = XDocument.Parse(myXmlString);
var result =
String.Join("^",
xDoc.Descendants("tr")
.Select(tr => String.Join(":",
tr.Elements("td")
.Select(td => td.Value.Trim()))));
最后 - 应该注意的是,这两种方法只适用于正确形成的Xml - 你的不是(td
元素没有结束标记)。如果你想处理Html,正如你的样本似乎建议的那样,你可能想要使用一个专门用它来工作的工具,例如: HtmlAgilityPack