如何为 c#.net 中的 tr 和 td 标记的每个循环编写 xapth
本文关键字:循环 xapth td net 中的 tr | 更新日期: 2023-09-27 17:56:15
<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,任何人都可以建议我如何做到这一点。
使用 XPath 2.0 可以执行以下操作:
fn:string-join(for $tr in //tr return fn:string-join($tr/td/text(),':'), '^')
在您发表评论后更新:.NET Framework 不直接支持 XPath 2.0,我不相信使用 1.0 可以轻松满足您的需求。您可以查看一些第三方库。
或者,如果您只是在寻找 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。