我有像这样的xml
<abcd>
<abcd1>
<hgjh>txt</hgjh>
<addedit>true</addedit>
<Db>txtDB</DB>
<server>ser</server>
</abcd1>
<abcd1>
<hgjh>txt</hgjh>
<addedit>false</addedit>
<Db>txtDB</DB>
<server>ser</server>
</abcd1>
</abcd>
现在基于addedit标志值,如果为true,我需要显示xml中任意数量节点的数据库名称和服务器名称。我已将其中两个作为参考。 请帮我解决这个问题。我在C#中尝试了很多无法达到所需功能的代码。
答案 0 :(得分:0)
希望这会对你有所帮助:
XmlDocument Xmlabcd= new XmlDocument();
Xmlabcd.LoadXml(xml); //xml=your xml
foreach (XmlNode v in Xmlabcd.ChildNodes)
{
if ( v.ChildNodes.Count > 0)
{
bool addedit=false;
string DBName=string.Empty;
string serverName=string.Empty;
foreach (XmlNode child in v.ChildNodes)
{
if (child.Name.Equals("addedit") )
{
addedit=child.InnerText=="true"?true:false;
}
if(child.Name.Equals("Db"))
{
DBName=child.InnerText;
}
if(child.Name.Equals("server"))
{
serverName=child.InnerText;
}
}
//Code to Show Db and server or to add it to one list based on bool addedit(variable) value
}
}
答案 1 :(得分:0)
有一个错误。打开“Db”不匹配关闭“DB”。
您可以使用XPath选择具有addedit = true
的节点var list = xmlDoc.DocumentElement.SelectNodes("abcd1[addedit='true']");
foreach (XmlNode node in list)
{
Console.WriteLine(node.SelectSingleNode("DB").InnerText);
Console.WriteLine(node.SelectSingleNode("server").InnerText);
}