我有一个XML格式的文档,看起来像这样:XML在vb.net解析
<?xml version="1.0" encoding="windows-1250"?>
< Recipe>
< Entry name="Stuffed Red Cabbage" ethnicity="Slavic" />
< Cook_Time Hrs="1" Mins="30" />
< Ingredients>
< Cabbage Amount="1" Measurement="head" />
< Egg Amount="1" Measurement="unit" />
< Ground_Beef Amount="1" Measurement="lb" />
< Margarine Amount="1/2" Measurement="cup" />
< Onion Amount="1" Measurement="unit" />
< Rice Amount="1" Measurement="cup" />
< Tomato_Soup Amount="3" Measurement="cans" />
< /Ingredients>
< Description>core cabbage and boil until leaves start pulling away. Strip leaves and let cool.
chop onion and place in frying pan with margarine and heat till lightly browned.
put ground beef, rice, onion, egg and salt to taste in bowl and mix.
stuff each leaf with mixture.
put tomato soup and stuffed leaves in pot and cook for about an hour.</Description>
</Recipe>
,我有代码,到目前为止是这样的:
OpenFileDialog1.Filter = "RecipeBook files (*.rcp)|*.rcp"
If OpenFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
Try
Dim settings As New XmlReaderSettings()
settings.IgnoreComments = True
Dim RecipeCard As String = OpenFileDialog1.FileName
Dim xmlreader As XmlTextReader
xmlreader = New XmlTextReader(RecipeCard)
Do While xmlreader.Read
'needs to read xml and write appropriate items to database and listview
xmlreader.MoveToContent()
If xmlreader.Name.Equals("Entry") Then
MessageBox.Show(xmlreader.GetAttribute("name") & " " & xmlreader.GetAttribute("ethnicity"), "test")
End If
If xmlreader.Name.Equals("Cook_Time") Then
MessageBox.Show(xmlreader.GetAttribute("Hrs") & " hrs " & xmlreader.GetAttribute("Mins") & " mins", "test")
End If
If xmlreader.Name.Equals("Ingredients") Then
End If
Loop
Catch
End Try
End If
我的问题必须做解析配料部分。我打算做这样的事情:
Dim IngredientCount As Integer = 0
Dim count As Integer = (something here that gets the count of subelements inside the Ingredients element)
For i = 1 To count
MessageBox.Show(xmlreader.GetAttribute("Amount") & " " & xmlreader.GetAttribute("Measurement"), "test")
Next
我只是无法弄清楚如何让子元素的数量,再怎么是指每一个连续获得的名称,然后那属性子元素。任何建议将不胜感激。
您使用.net 3.5吗? Xlinq将使这更容易。 http://msdn.microsoft.com/en-us/vbasic/bb738050.aspx – 2009-12-12 19:58:29
我使用3.5,我需要重用3.5紧凑,以及我会看看。 – MaQleod 2009-12-12 20:02:59