如何阅读这部分Web XML文件?

时间:2014-06-13 19:55:31

标签: c# xml

我正在开发一个XML阅读器,它在标签中显示结果。 我想读取名为" Opmerking"的节点。这是站在" Opmerkingen" 一个例子:

<VertrekkendeTrein>
 <RitNummer>4085</RitNummer>
 <VertrekTijd>2014-06-13T22:00:00+0200</VertrekTijd>
 <EindBestemming>Rotterdam Centraal</EindBestemming>
 <TreinSoort>Sprinter</TreinSoort>
 <RouteTekst>A'dam Sloterdijk, Amsterdam C., Duivendrecht</RouteTekst> 
 <Vervoerder>NS</Vervoerder>
 <VertrekSpoor wijziging="false">4</VertrekSpoor>
 <Opmerkingen>
  <Opmerking> Rijdt vandaag niet</Opmerking>
 </Opmerkingen>
</VertrekkendeTrein>

&#34; Opmerkingen&#34;并不总是存在,它总是在变化。我现在使用的代码:

XmlNodeList nodeList = xmlDoc.SelectNodes("ActueleVertrekTijden/VertrekkendeTrein/*");

foreach (XmlNode nodelist2 in nodeList)
{
    if (i < 17) //4
    {
        switch (nodelist2.Name)
        {
            case "VertrekTijd": string kuttijd4 = (nodelist2.InnerText);
            var res4 = Regex.Match(kuttijd4, @"\d{1,2}:\d{1,2}").Value;
            lblv4.Text = Convert.ToString(res4); break;
            case "TreinSoort": lblts4.Text = (nodelist2.InnerText); break;
            case "RouteTekst": lblvia4.Text = (nodelist2.InnerText); break;
            case "VertrekSpoor": lbls4.Text = (nodelist2.InnerText); i++; break;
        }
    }
}

我如何阅读部分&#34; Opmerking&#34;并将其设置在案例中? 我尝试了几次,但失败了。  我也尝试过:

case "Opmerking": var texeliseeneiland1 = (nodelist2.InnerText); if (texeliseeneiland1 == null) { } else { lblop1.Text = texeliseeneiland1; lblop1.Font = new Font(lblop1.Font.FontFamily, 17); lblop1.Visible = true; picop1.Visible = true; }; break;

有谁知道答案?

2 个答案:

答案 0 :(得分:1)

只需扩展逻辑,检查当前节点是否有子节点,如果是,请读取它们并处理:

if (nodelist2.HasChildNodes)
{
  for (int i=0; i<nodelist2.ChildNodes.Count; i++)
  {
    var childNode = root.ChildNodes[i];
    //do whatever you need to display the contents of the child node. 
  }
}

此外,我必须建议考虑LinqToXML或至少重构您共享的代码。使用LinqToXML可能就像这样简单:

var temp = from remarkNode in nodelist2.Descendants("Opmerking")
           select remarkNode.Value;

答案 1 :(得分:0)

以某种方式将xml内容加载到XDocument对象中并循环遍历它。 示例:从文件中读取

 var doc = XDocument.Load("C:/test.xml");

 foreach (var xe in doc.Descendants("Opmerking"))
 {
     var value = xe.Value;
     //Do your job with value
 }