C# 对象在赋值后变为空';s innerhtml属性
我试图替换html元素中的一些代码。有一次,我在网页中的文本片段周围添加了一些元素。另一方面,我需要删除它(它是基于geckofx的浏览器中的一个简单搜索引擎)C# 对象在赋值后变为空';s innerhtml属性,c#,html,geckofx,C#,Html,Geckofx,我试图替换html元素中的一些代码。有一次,我在网页中的文本片段周围添加了一些元素。另一方面,我需要删除它(它是基于geckofx的浏览器中的一个简单搜索引擎) if(element.OuterHtml.Contains(spanStyle)) if(element.Parent!=null) { 字符串oldHtml=element.OuterHtml; 字符串newHtml=oldHtml.Replace(spanStyle,“”)。Replace(“”,“”); element.Paren
if(element.OuterHtml.Contains(spanStyle))
if(element.Parent!=null)
{
字符串oldHtml=element.OuterHtml;
字符串newHtml=oldHtml.Replace(spanStyle,“”)。Replace(“”,“”);
element.Parent.InnerHtml=newHtml;
}
问题是我不能替换元素的OuterHtml,而是试图替换它的父元素的InnerHtml
但是,只要element.Parent.InnerHtml=newHtml,element.Parent就会变为null代码>被执行,元素的OuterHtml仍然包含span元素。我甚至尝试过替换element.Parent.InnerHtml的文本内容,以查看问题是否出在删除标记上,但显然这没有什么区别-只要我分配元素.Parent.InnerHtml
,元素.Parent
就变为空
干杯
Bartosz如果更改父元素的InnerHtml
,则很明显,子元素不再是父元素的子元素,因此元素。父元素
变为null
。您是否尝试将元素.Parent
存储在这样的临时变量中
var parent = element.Parent;
...
element.Parent.InnerHtml = newHtml;
...
// do something with the variable parent here which should not be null
你能发布spanStyle的代码吗?@HimBromBeere-当然,那是
。变量newHtml和oldHtml看起来总是正常的。即使我使用类似于element.Parent.RemoveChild(element)的东西,element.Parent也会变为null你好,罗伯特,谢谢-事实上,我试过了,但这并没有真正解决我的问题。我的目标是用highlighted string
替换类似highlighted string
的element.OuterHtml,因为我无法分配OuterHtml,所以我想尝试使用父级的innerHtml,这看起来是一样的……问题是,当您删除span
-标记时,元素
不再存在,因为元素
是span
-标记。如果元素.Parent
是一个类似
的标记,则必须再次搜索此节点/元素才能访问它。例如,如果XML是这样的:高亮显示的字符串
,元素
是span
-标记,元素。Parent
是根
-标记。现在,如果您这样做:element.Parent.InnerHtml=“higlight string”代码>,元素
不再存在,因为span
-标记已被删除。要访问root
-标记,您必须再次找到它,例如使用XPath//root
。实际上,这就是您无法更改OuterXml
的原因。原因OuterXml
包含当前元素本身的标记。更改为OuterXml
将导致元素本身不再存在并变得无效的情况。所以你的方法在逻辑上是不可能的。
var parent = element.Parent;
...
element.Parent.InnerHtml = newHtml;
...
// do something with the variable parent here which should not be null