1
我有一个XML的以下文件级块通过XML循环并删除每个第10个节点实例 - 如何?
<?xml version="1.0" encoding="utf-8"?>
<TenDayWeather>
<TenDay ID="B3_7187">
<TenDayData>
<Day>FRI 9</Day>
<MinTemp>4°C</MinTemp>
<MaxTemp>10°C</MaxTemp>
<Icon>Rain</Icon>
<IsWeekday>true</IsWeekday>
</TenDayData>
<TenDayData>
<Day>SAT 10</Day>
<MinTemp>6°C</MinTemp>
<MaxTemp>15°C</MaxTemp>
<Icon>Fewshowers</Icon>
<IsWeekday>false</IsWeekday>
</TenDayData>
<TenDayData>
<Day>SUN 11</Day>
<MinTemp>4°C</MinTemp>
<MaxTemp>15°C</MaxTemp>
<Icon>Fewshowers</Icon>
<IsWeekday>false</IsWeekday>
</TenDayData>
<TenDayData>
<Day>MON 12</Day>
<MinTemp>5°C</MinTemp>
<MaxTemp>14°C</MaxTemp>
<Icon>Rain</Icon>
<IsWeekday>true</IsWeekday>
</TenDayData>
<TenDayData>
<Day>TUE 13</Day>
<MinTemp>2°C</MinTemp>
<MaxTemp>13°C</MaxTemp>
<Icon>Fewshowers</Icon>
<IsWeekday>true</IsWeekday>
</TenDayData>
<TenDayData>
<Day>WED 14</Day>
<MinTemp>3°C</MinTemp>
<MaxTemp>14°C</MaxTemp>
<Icon>Fewshowers</Icon>
<IsWeekday>true</IsWeekday>
</TenDayData>
<TenDayData>
<Day>THU 15</Day>
<MinTemp>3°C</MinTemp>
<MaxTemp>16°C</MaxTemp>
<Icon>Fine</Icon>
<IsWeekday>true</IsWeekday>
</TenDayData>
<TenDayData>
<Day>FRI 16</Day>
<MinTemp>5°C</MinTemp>
<MaxTemp>16°C</MaxTemp>
<Icon>Cloudy</Icon>
<IsWeekday>true</IsWeekday>
</TenDayData>
<TenDayData>
<Day>SAT 17</Day>
<MinTemp>8°C</MinTemp>
<MaxTemp>16°C</MaxTemp>
<Icon>Rain</Icon>
<IsWeekday>false</IsWeekday>
</TenDayData>
<TenDayData>
<Day>SUN 18</Day>
<MinTemp>4°C</MinTemp>
<MaxTemp>13°C</MaxTemp>
<Icon>Showers</Icon>
<IsWeekday>false</IsWeekday>
</TenDayData>
</TenDay>
<TenDay ID="B3_11194">
<TenDayData>
etc etc, repeats some 250 times with a different TenDay ID
</TenDay>
</TenDayWeather>
这仅仅是一个堆的一个(250左右)的这些段,我需要遍历和删除TenDayData的”每第十节点实例的”。每个组中只有10个'TenDayData'实例,所以我需要每次删除最后一个。
这样做的最好方法是什么? 我对XmlDocument和XmlTextReader中的dot net childNodes很熟悉,但无法弄清楚如何区分10个子节点而不使用ForNext循环和一个听起来不像正确方法的计数器。
任何线索任何人
我使用vb.net,但可以读取大多数c#。
顺便提一下,这是我正在玩的代码。
Dim reader As New XmlTextReader(fSourceXmlPath & xmlFileName)
Dim doc As XmlDocument = New XmlDocument()
doc.Load(reader)
reader.Close()
Dim childNode As XmlNode
Dim nodeList As XmlNodeList
Dim iNode As Integer = 0
nodeList = doc.GetElementsByTagName("//TenDayWeather/TenDay[@ID='B3_7187']")
Console.Write(nodeList.Count.ToString)
For Each node As XmlElement In nodeList
iNode += 1
If iNode = 10 Then
Console.WriteLine(node("TenDayData").InnerText)
childNode = doc.SelectSingleNode("//TenDayWeather/TenDay[@ID='B3_7187']/TenDayData")
childNode.ParentNode.RemoveChild(childNode)
End If
Next
doc.Save(fSourceXmlPath & xmlFileName)
不幸的是,从来没有任何nodeList.count值。
感谢