gpt4 book ai didi

c# - 使 control.Parsecontrol(HTMLString) 通过 Div 元素而不是 Br 元素过滤 Literalcontrol

转载 作者:太空狗 更新时间:2023-10-29 20:39:59 25 4
gpt4 key购买 nike

这是我在这个网站上提出的第一个问题,所以对于我提前做的任何错误,我深表歉意,不过我会尽量提出这个问题。

我发现我的问题有点难以解释,但可以归结为:

我有一大串 HTML,它是通过从 Web 服务检索 XML 文件并使用 XSLT 将其转换成一大串 HTML 生成的。然后我将它解析为一个 Control 集合,添加一些事件处理程序并将其添加到 HTMLPlaceholder 并且万岁一切正常。

但是,由于此 HTML 字符串几乎包含我的整个网站,并且在无法一次处理所有标记的手持终端上运行,因此我过滤了我发送的标记,但这会带来问题。

Div 元素无法在不丢失我要保留的 Div 元素的情况下过滤掉。这是因为 Parsecontrol 将我的 Div 元素切成两半并将它们变成 Literalcontrols,这些元素按 br 元素排序。

展示我的代码有点困难,但这里有一个例子:

//html contains the auto generated HTML 
ctrl = ParseControl (html);

for ( int i = ctrl.Controls.Count - 1 ; i >= 0 ; --i )
{

string MenuId = "";
Control theControl = ctrl.Controls[i];

if ( theControl is Button )
// Code that filters buttons
if ( theControl is TextBox)
// Code that filters textboxes

if ( theControl is LiteralControl )
{
LiteralControl literal = theControl as LiteralControl;

//This checks if the Div element I'm looking for exists
//If it does, I want to keep it
bool contains = literal.Text.Contains ("<div id=\"" + ParentDiv);
if ( contains )
MenuId = ParentDiv;
}

if ( MenuId != ParentDiv )
{
ctrl.Controls.RemoveAt (i);
}

}

当我到达 LiteralControl 部分时,事情就出错了。按钮和文本字段工作正常。然而,LiteralControl 将我的 Div 元素切成两半,并由 br 元素过滤。我的 div 元素如下所示(为简洁起见进行了编辑):

<div class="hide" id="TB_24000" >
<br>
<Textbox elements>
<Button elements>
<Label elements>
<br>
<Textbox elements>
<Button elements>
<Label elements>
<br>
<input type="button" id="btnBack" value="Tilbage" class="BackandResetButtons" onclick="backButton(this,document.getElementById('MenuLevel1'),document.getElementById('TB_24000')); return false;"></div>

但我的 LiteralControl 元素如下所示(未经编辑):

<br><input type="button" id="btnBack" value="Tilbage" class="BackandResetButtons" onclick="backButton(this, document.getElementById('TB_33999'),document.getElementById('TB_38400'));&#xA;          "></div>

接下来:

<br><label class="label">FRAGT</label><br>

接下来:

<br><label class="label">SPEDITØR</label><br>

如您所见,我的 LiteralControls 基于 br 元素,但问题是我想根据 Div 元素进行过滤。但是,如果不诉诸肮脏且坦率地说不需要的黑客攻击,这似乎是不可能的。

所以我的问题是:如何根据 Div 元素而不是 Br 元素进行过滤?我可以过滤添加功能的按钮和文本框,但我的布局和网站取决于我的 Div 元素。

最佳答案

尝试关闭您的 BR像这样的元素:<br />我认为解析器被 BR 搞糊涂了没有结束标记的元素。

关于c# - 使 control.Parsecontrol(HTMLString) 通过 Div 元素而不是 Br 元素过滤 Literalcontrol,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13952152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com