Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对象在赋值后变为空';s innerhtml属性_C#_Html_Geckofx - Fatal编程技术网

C# 对象在赋值后变为空';s innerhtml属性

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

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

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也会变为nullhighlighted 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