- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 C# 中,如何获取 System.Windows.Form.HtmlElement 的文本而不包括其子项的文本?
如果我有
<div>aaa<div>bbb<div>ccc</div><div>ddd</div></div></div>
然后整个事物的 InnerText 属性是“aaabbbcccddd”,我只想要“aaa”。
我认为这应该是微不足道的,但我还没有发现任何东西可以在 C# 中生成 HtmlElement 的“即时”文本。更可笑的想法是从父级“减去”子级的 InnerText,但对于我确信微不足道的事情来说,这是一项疯狂的工作量。
(我只想访问 HtmlElement 的文本节点。)
我非常感谢任何人可以提供的任何帮助(或指示)。
非常感谢。
例子:
<div>aaa<div>bbb<div>ccc</div><div>ddd</div></div></div> -> Produce "aaa"
<div><div>ccc</div><div>ddd</div></div> -> Produce ""
<div>ccc</div> -> Produce "ccc"
编辑
有很多方法可以给这只猫剥皮,但没有一种很优雅。但是,鉴于我的限制(不是我的 HTML,很可能无效),我认为 Aleksey Bykov 的解决方案最接近我的需要(事实上,我确实实现了他在上一条评论中建议的相同解决方案。)
我选择了他的解决方案,并对所有其他我认为可行但对我而言并非最佳的解决方案投了赞成票。我会回来查看是否支持任何其他似乎可行的解决方案。
非常感谢。
最佳答案
也许它比这更简单,如果您愿意使用 XmlDocument 而不是 HtmlDocument - 您可以只使用 XmlElement 的“Value”属性。
此代码为您提到的 3 种情况提供了您想要的输出:
class Program
{
private static string[] htmlTests = {@"<div>aaa<div>bbb<div>ccc</div><div>ddd</div></div></div>",
@"<div><div>ccc</div><div>ddd</div></div>",
@"<div>ccc</div>" };
static void Main(string[] args)
{
var page = new XmlDocument();
foreach (var test in htmlTests)
{
page.LoadXml(test);
Console.WriteLine(page.DocumentElement.FirstChild.Value);
}
}
}
输出:
aaa
ccc
关于c# - 如何从 C# System.Windows.Form.HtmlElement 中提取 *immediate* 文本(即不是子文本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19898707/
我正在尝试使用 VS 2013 中的 WebBrowser 控件在网页上输入文本。我的应用程序是用 C# 编写的。网页的 Html 不使用标准 ID,而是使用称为 data-gel-id 的内容。我相
假设我有以下 HTML 代码: My first menu My second menu My title My t
在很多情况下,我已经能够以两种方式为所有 HTMLElements 注册方法。 所以我很好奇,有什么不同吗? 我应该更喜欢一种方法而不是另一种方法吗? 什么是正确的方法? 最佳答案 使用原型(prot
我创建了一个自定义事件。 var event = new Event('hello');,向节点添加监听器 div1.addEventListener('hello', /*cb1*/); div2.
[[WARNING]]:看起来像问题 TypeScript: add type property to HtmlElement但我需要向元素对象添加一个函数,而不是向节点添加属性。 我尝试将 Java
我通过 babel(es2015 预设)运行 my-widget.js 来生成 my-widget-es5.js。这会导致 Polymer 出现错误。 Class constructor Polyme
[[WARNING]]:看起来像问题 TypeScript: add type property to HtmlElement但我需要向元素对象添加一个函数,而不是向节点添加属性。 我尝试将 Java
我试图用以下设计模式写一些东西: void main() { document.registerElement('abs-test', Test); TestExtend test =
我正在尝试为 textarea html 元素引发 keydown 和 key up 事件,我可以将内部文本设置为我想要的文本,但网站似乎不承认文本在那里,除非我可以提出这些事件。我怎样才能做到这一点
使用 jQuery 可以做这样的事情:$("div")[5].animate() 在我看来,开发人员使用 prototype 扩展了 HTMLElement。 我现在的问题是:他们是怎么做到的?例如,
似乎HTMLElements默认情况下在 5 秒内等待元素。有什么方法可以更改此默认超时持续时间吗? 最佳答案 在当前版本中这是不可能的。但是我们有一个开放的拉取请求(https://github.c
https://jsfiddle.net/6vqbLm5c/29/ HTML: paragraph CSS: p { margin:0; } div { padding: 10px
如果该按钮不存在,则测试将挂起超过 5 秒。 DefaultElementLocator 中的 findElement() 方法被调用约 63 次! block 嵌套越深,等待时间越长。 是否可以在
我想检查库如何处理我传递给它的视频元素,所以我天真地这样做了: cosnt videoElement = new Proxy(document.querySelector('video'), {
我有一个 Element,但我不知道如何从中获取 HTMLElement。 例如: A link Another link 然后我像这样得到它们: var nodes: NodeListOf = do
我想从 document 获取元素高度,我正在尝试使用 const header = document.getElementsByClassName(myClass) 获取它。但是在将Element
我在将我的一个 JavaScript 行转换为 TypeScript 时遇到了一些问题。 此行用于在 ID 为 containerId 的容器上创建类型为 widgetName 的小部件。 widge
我正在尝试在 TypeScript 中实例化新的 HTMLDivElement var elem = new HTMLDivElement(); 但是浏览器抛出 Uncaught TypeError:
我想通过 javasacript 从字符串创建 HTMLElement,就像这样 element = createHTMLElement('title') element.addEventListen
如何获取插槽中 child 的 Dom 元素。试图在life hook onMounted()中获取一个对象的el vnode属性为null 我的组件: {{text}} impo
我是一名优秀的程序员,十分优秀!