C# XML仅在文本匹配条件时获取元素
我的最终输出结果如下所示:C# XML仅在文本匹配条件时获取元素,c#,xml,C#,Xml,我的最终输出结果如下所示: using (XmlReader xmlReader = XmlReader.Create(zdPath)) { xmlReader.MoveToContent(); while(xmlReader.Read()) { if(xmlReader.IsStartElement()) { switch (xmlReader.Nam
using (XmlReader xmlReader = XmlReader.Create(zdPath))
{
xmlReader.MoveToContent();
while(xmlReader.Read())
{
if(xmlReader.IsStartElement())
{
switch (xmlReader.Name.ToLower())
{
case "machinename":
Console.WriteLine(xmlReader.ReadString().Trim());
break;
case "rolename":
if (xmlReader.ReadString() == "Admin")
{
Console.WriteLine(xmlReader.Value) //Whitespace
Console.WriteLine(xmlReader.ReadString());//Whitespace
}
break;
}
}
}
}
我不完全确定为什么会这样,但确实如此。将xmlReader.Read()添加到每个案例中可以让我知道下一个元素的值。不管怎样,我认为这就是正在发生的事情
PCONE
--blank line--
--blank line--
PCTWO
您应该为此使用XPath或XSLT
PCONE
--blank line--
--blank line--
PCTWO
using (XmlReader xmlReader = XmlReader.Create(zdPath))
{
xmlReader.MoveToContent();
while(xmlReader.Read())
{
if(xmlReader.IsStartElement())
{
switch (xmlReader.Name.ToLower())
{
case "machinename":
xmlReader.Read();
string clientName = xmlReader.Value;
Console.WriteLine(xmlReader.Value);
break;
case "rolename":
xmlReader.Read();
string role = xmlReader.Value;
if (role == "Admin")
{
Console.WriteLine(xmlReader.Value);
}
break;
}
}
}
}