如何为 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,任何人都可以建议我如何做到这一点。

如何为 c#.net 中的 tr 和 td 标记的每个循环编写 xapth

使用 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。