【问题标题】:Get div content by id通过id获取div内容
【发布时间】:2016-08-09 21:39:52
【问题描述】:

我有一个保存整个 html 文档的字符串。我想获取具有特定 ID 的 div 中的所有内容。例如:

<div id="myId" class = "myClass">
 <div class = "myClass">hello</div>
</div>

我需要 id="myId" 的标签和结束标签之间的内容。 有什么办法可以做到这一点?输出应该是第二行。

【问题讨论】:

  • 我们谈论的是 WebForms、MVC 还是 WebApi?您尝试过什么,您的代码在哪里?
  • 请告诉我们你到目前为止做了什么?
  • 你的意思是如果 id 为 myId 的 div 在后面的代码中,你需要获取 HTML 内容吗??

标签: c# html html-parsing


【解决方案1】:

您希望c# 代码中的div 中的html 位于server side,因此您可以这样做。

<div id="myId" class = "myClass" runat="server">
 <div class = "myClass">hello</div>
</div>

因此您必须将runat="server" 属性添加到该div 才能访问服务器上C# 代码上的该div。

并像这样访问:

Debug.WriteLine(myId.InnerHtml);

然后检查output 窗口,您将获得&lt;div class = "myClass"&gt;hello&lt;/div&gt; 这个。

快乐编码

【讨论】:

  • 虽然如果 OP 使用 ASP.NET 这是正确的,但如果他只需要解析 HTML 文档就无济于事。那么Saeb的回答会更有帮助。 OP:“我有一个保存整个 html 文档的字符串。”
【解决方案2】:

干净且正确的方法是通过 HTML 解析器,例如 HtmlAgilityPack:

string stringThatKeepsYourHtml = "<div id=....";
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(stringThatKeepsYourHtml);
string whatUrLookingFor = doc.GetElementbyId("myId").InnerHtml;

【讨论】:

  • 如果无法向解决方案添加库怎么办?我们应该采用脏文本处理方式吗?
  • @AleX_ 我怀疑这在任何实际项目中都是一个合理的限制,我建议您首先挑战这一点,但除了创建自己的 DOM 解析器之外,如果您正在处理小型、可预测的HTML,文本处理可以是一个快速的胜利。
  • 在我的情况下,如何通过类名查找 id?
    你好
  • @saebAmini 是的,选择节点成功了 ticketID = doc.DocumentNode .SelectSingleNode("//div[@class='myClass']").Id;
【解决方案3】:

步骤 1. 将 HTML 元素设置为 runat = 'server' 并提供 ID。

<div id="myId" class = "myClass" runat="server">
 <div class = "myClass">hello</div>
</div>

第 2 步。使用以下 C# 代码获取 Div HTML 字符串。

System.IO.StringWriter sw = new System.IO.StringWriter();
       System.Web.UI.HtmlTextWriter h = new System.Web.UI.HtmlTextWriter(sw);
                myId.RenderControl(h);
                string str = sw.GetStringBuilder().ToString();
  • myId 是您的 DIV ID。
  • 或者您可以使用 HTML Agility Pack(HAP)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2019-05-18
    • 2011-01-09
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多