gpt4 book ai didi

c# - 使用递归函数解析xml值时出错

转载 作者:太空宇宙 更新时间:2023-11-03 14:06:55 25 4
gpt4 key购买 nike

我有一个 XML 文件,我已经创建了一个用于从 XML 节点检索值的函数。现在的问题是,如果我的节点没有内部节点,流程仍然会进入递归语句!

看看我的函数

/*
XmlDocument x = new XmlDocument(); x.Load(filename);
*/
public string getValue(string nodename)
{

if (File.Exists(filename))
{


foreach (XmlNode xx in x.SelectNodes("//"+nodename))
{
if (xx.HasChildNodes)
getValue(nodename + "//"+xx.ChildNodes[0].Name);
else
return xx.InnerText;
}

}
return null;
}

我的xml文件是

<oodle_response stat="ok">
<current>
<region>
<id>barrie</id>
<name>Barrie</name>
</region>
<start>1</start>
<num>10</num>
</current>
</oodle_response>

我正在通过

调用我的函数
protected void btnLets_Click(object sender, EventArgs e)
{
string filename = Server.MapPath("~/xmls/newXmlFile.xml";
oodleXmlParser ox = new oodleXmlParser(filename);
Response.Write(ox.getValue("oodle_response"));
}

最佳答案

Now the problem is if my node have no inner node, still flow goes inside the recursive sentence !

不太对,例如在

<start>1</start>

'1' 将是 XmlNodeType.Text 类型的 XmlNode,因此您需要检查子节点的节点类型而不是(或可能使用)xx.HasChildNodes。我认为你的方法应该是这样的

public static string getValue(string nodename)
{

if (File.Exists(filename))
{

int i = 0;
foreach (XmlNode xx in x.SelectNodes("//" + nodename))
{
if (xx.HasChildNodes && xx.ChildNodes[i].NodeType == XmlNodeType.Element)
return getValue(nodename + "//" + xx.ChildNodes[i].Name);//i'm sure it should return value
else
return xx.InnerText;
i++;
}

}
return null;
}

关于c# - 使用递归函数解析xml值时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9082633/

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