【问题标题】:object becomes null after assigning it's innerhtml property对象在分配它的 innerhtml 属性后变为空
【发布时间】:2014-07-29 07:57:09
【问题描述】:

我正在尝试替换 html 元素中的一些代码。有一次,我在网页中的文本片段周围添加了一个元素。在其他我需要删除它(它是一个基于 geckofx 的浏览器中的简单搜索引擎)

if (element.OuterHtml.Contains(spanStyle))
    if (element.Parent != null)
    {
         string oldHtml = element.OuterHtml;
         string newHtml = oldHtml.Replace(spanStyle, "").Replace("</span>", "");
         element.Parent.InnerHtml = newHtml;
    }

问题是我无法替换元素的 OuterHtml - 相反,我试图替换它的父元素的 InnerHtml。

但是,一旦执行element.Parent.InnerHtml = newHtml;,element.Parent 就会变为null,并且该元素的OuterHtml 仍然包含span 元素。我什至尝试替换 element.Parent.InnerHtml 的文本内容以查看问题是否出在删除标签上,但显然它并没有什么不同——一旦我分配了element.Parent.InnerHtmlelement.Parent 就会变为空。

干杯!

巴托斯

【问题讨论】:

  • 你能发布 spanStyle 的代码吗?
  • @HimBromBeere - 当然,那是&lt;span style=\"background-color: gold;\"&gt;。变量 newHtml 和 oldHtml 看起来总是没问题。即使我使用element.Parent.RemoveChild(element); 之类的东西,element.Parent 也会变为 null

标签: c# html geckofx


【解决方案1】:

如果更改元素父元素的InnerHtml,很明显子元素不再是父元素的子元素,因此element.Parent 变为null。您是否尝试将element.Parent 存储在这样的临时变量中?

var parent = element.Parent;
...
element.Parent.InnerHtml = newHtml;
...
// do something with the variable parent here which should not be null

【讨论】:

  • 嗨罗伯特,谢谢 - 实际上,我试过了,但这并没有真正解决我的问题。我的目标是用higlighted string 替换类似于&lt;span style=\"background-color: gold;\"&gt;higlighted string&lt;/span&gt; 的element.OuterHtml,由于我无法分配OuterHtml,我想尝试使用父级的innerHtml,这似乎是相同的......
  • 问题是当您删除span-Tag 时,element 不再存在,因为elementspan-Tag。如果element.Parent&lt;root&gt; 之类的标签,则必须再次搜索此节点/元素才能访问它。
  • 例如,如果 XML 如下所示:&lt;root&gt;&lt;span style="background-color: gold;"&gt;higlighted string&lt;/span&gt;&lt;/root&gt;elementspan-Tag,element.Parentroot-Tag。现在,如果您这样做:element.Parent.InnerHtml = "higlighted string";element 不再存在,因为 span-Tag 已删除。要访问root-Tag,您必须再次找到它,例如使用 XPath //root
  • 其实这就是你不能改OuterXml的原因。原因 OuterXml 包含当前元素本身的标签。对OuterXml 的更改将导致元素本身不再存在并变为无效的情况。所以你的方法在逻辑上是不可能的。
猜你喜欢
  • 2016-05-04
  • 2021-08-19
  • 2014-07-15
  • 1970-01-01
  • 2013-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多