我有一种在html文档中搜索值的方法,如果找到一个项目((“ settingsings”)),则返回该值。 但是,如果找不到该元素((“ settings”)),则循环退出。 我想如果找不到该项目,则CurrentProfileDLS设置为null
private string CopyProfileDLS_Intercept_AddPhone_Unify(string CurrentProfileDLS)
{
var elmC = web_Browser.Document.GetElementsByTagName("select");
foreach (HtmlElement elm in elmC)
{
if (elm.Id == "DLSProf")
{
if (elm.InnerText.Contains("settings"))
{
CurrentProfileDLS = elm.GetAttribute("value");
}
}
}
return CurrentProfileDLS;
}
我尝试过,但是CurrentProfileDLS变量未设置为null:
private string CopyProfileDLS_Intercept_AddPhone_Unify(string CurrentProfileDLS)
{
var elmC = web_Browser.Document.GetElementsByTagName("select");
foreach (HtmlElement elm in elmC)
{
if (elm.Id == "DLSProf")
{
if (elm.InnerText.Contains("settings"))
{
CurrentProfileDLS = elm.GetAttribute("value");
}
return CurrentProfileDLS;
}
}
return null;
}
如何解决?
答案 0 :(得分:2)
似乎甚至不需要private string CopyProfileDLS_Intercept_AddPhone_Unify()
{
var elmC = web_Browser.Document.GetElementsByTagName("select");
var elm = elmC.FirstOrDefault(e => e.Id == "DLSProf" && e.InnerText.Contains("Settings"));
return elm?.GetAttribute("value");
}
。为什么不仅仅根据结果直接返回?
var elm = elmC.LastOrDefault(e => e.Id == "DLSProf" && e.InnerText.Contains("Settings"));
您的原始帖子可让循环继续查找比赛,从而使行为类似于“获胜中的最后一个”,因此,如果仍然需要,您可以将该行更改为:
cur_yaml['organizations'] += [org_data]
答案 1 :(得分:1)
您只需要将CurrentProfileDLS
初始设置为null。
private string CopyProfileDLS_Intercept_AddPhone_Unify(string CurrentProfileDLS)
{
CurrentProfileDLS = null;
var elmC = web_Browser.Document.GetElementsByTagName("select");
foreach (HtmlElement elm in elmC)
{
if (elm.Id == "DLSProf")
{
if (elm.InnerText.Contains("settings"))
{
CurrentProfileDLS = elm.GetAttribute("value");
}
break;
}
}
return CurrentProfileDLS;
}
我不了解参数CurrentProfileDLS
的用途。如果除存储CurrentProfileDLS = elm.GetAttribute("value");
中的值之外没有其他目的,建议您删除它。
private string CopyProfileDLS_Intercept_AddPhone_Unify()
{
string CurrentProfileDLS = null;
var elmC = web_Browser.Document.GetElementsByTagName("select");
foreach (HtmlElement elm in elmC)
{
if (elm.Id == "DLSProf")
{
if (elm.InnerText.Contains("settings"))
{
CurrentProfileDLS = elm.GetAttribute("value");
}
break;
}
}
return CurrentProfileDLS;
}
答案 2 :(得分:1)
您要传递一个要设置(或为空)的值,但不使用参数上的df.set_index('Date', inplace=True)
修饰符。不知道确切为什么要传递Out
的情况下,我建议对
CurrentProfileDLS
通过这种方式,您可以将字段初始化为null并在最后将其返回,而不管其是否被private string CopyProfileDLS_Intercept_AddPhone_Unify()
{
string CurrentProfileDLS = null;
var elmC = web_Browser.Document.GetElementsByTagName("select");
foreach (HtmlElement elm in elmC)
{
if (elm.Id == "DLSProf")
{
if (elm.InnerText.Contains("settings"))
{
CurrentProfileDLS = elm.GetAttribute("value");
}
}
}
return CurrentProfileDLS;
}
覆盖。