是否可以使用c#检测xml节点是否存在?

时间:2014-06-03 07:59:16

标签: c# xml

我有一个xml文件,我想知道是否可以查看xml文件中是否存在<VertrekVertragingTekst>

这是xml节点:

<VertrekkendeTrein>
<RitNummer>4722</RitNummer>
<VertrekTijd>2014-06-03T09:45:00+0200</VertrekTijd>
<VertrekVertraging>PT2M</VertrekVertraging>
<VertrekVertragingTekst>+2 min</VertrekVertragingTekst>
<EindBestemming>Uitgeest</EindBestemming>
<TreinSoort>Sprinter</TreinSoort>
<Vervoerder>NS</Vervoerder>
<VertrekSpoor wijziging="false">2</VertrekSpoor>
</VertrekkendeTrein>

(这些节点是荷兰语,所以不要注意他们说的话,这并不重要)

这是我到目前为止的c#代码:

XmlNodeList nodeList = xmlDoc.SelectNodes("ActueleVertrekTijden/VertrekkendeTrein/*");
foreach (XmlNode nodelist2 in nodeList)
{                    
    if (i < 1) //1
        switch (nodelist2.Name)
        {
            case "VertrekTijd": string kuttijd1 = (nodelist2.InnerText);
                var res1 = Regex.Match(kuttijd1, @"\d{1,2}:\d{1,2}").Value;
                lblv1.Text = Convert.ToString(res1); break;
            case "VertrekVertragingTekst": ververt1.Text = (nodelist2.InnerText); ververt1.Visible = true; vertpic1.Visible = true; logo1.Top -= 9; lblts1.Top -= 9; break;
            case "EindBestemming": string vertrek1 = (nodelist2.InnerText); if (vertrek1 == "Uitgeest") { lblvia1.Text = "Krommenie-Ass"; } lblbs1.Text = vertrek1; break;
            case "TreinSoort": lblts1.Text = (nodelist2.InnerText); break;
            case "RouteTekst": lblvia1.Text = (nodelist2.InnerText); break;
            case "VertrekSpoor": lbls1.Text = (nodelist2.InnerText); i++; break;
        }
}

我可以读出这个文件,一切正常,但我想知道我怎么能检测到这个节点的存在?

3 个答案:

答案 0 :(得分:3)

使用SelectSingleNode Method

var result = node.SelectSingleNode("nodeTocheck");
if(result!=null)
{
}

答案 1 :(得分:0)

可以使用Linq To Xml基于以下代码片段完成。

XDocument XmlDoc = XDocument.Parse(Doc);
var Query = XmlDoc.Root.DescendantNodes()
                       .OfType<XElement>()
                       .Where(iEl =>iEl.Name.LocalName.Equals("NodeName"));

序列将包含名称为NodeName的所有节点。

答案 2 :(得分:0)

我使用 XmlReader 类来读取XML文件,您也可以尝试一下 命名空间 System.Xml.XmlReader

示例:

String xmlString =
            @"<bookstore>
                <book genre='autobiography' publicationdate='1981-03-22' ISBN='1-861003-11-0'>
                    <title>The Autobiography of Benjamin Franklin</title>
                    <author>
                        <first-name>Benjamin</first-name>
                        <last-name>Franklin</last-name>
                    </author>
                    <price>8.99</price>
                </book>
            </bookstore>";

        // Create an XmlReader
        using (XmlReader reader = XmlReader.Create(new StringReader(xmlString)))
        {
            if(reader.ReadToFollowing("book"))
            {
                reader.MoveToFirstAttribute();
                string genre = reader.Value;
                Console.WriteLine("The genre value: " + genre);
            }
            else
            {
                //Do something else
            }
        }

<强>输出

流派价值:自传