【发布时间】:2011-12-29 18:39:33
【问题描述】:
我正在尝试解析这个包含一些嵌套节点的 xml 文件。不知道怎么把看起来整齐的xml文件内容放在这里。如果你能告诉我怎么做,那就太好了。
这是我的代码。我能够检索一些信息,但其中一些信息不正确(strGrant 的值应该用于 strSupport)。 有人能告诉我我的代码有什么问题吗?我是这里的新手。任何帮助表示赞赏!
Dim strGrant, strSupport, strDatabank, strWeight, strNumOfGrants, strNumOfSupports, strNumOfDatabanks As String
While XmlReader.Read()
Console.WriteLine("{0}: {1}", XmlReader.NodeType.ToString(), XmlReader.Name)
If XmlReader.Name.ToString() = "GrantInfo/NumberOfGrants" Then strNumOfGrants = Trim(XmlReader.ReadString())
If XmlReader.Name.ToString() = "NumberOfGrants" Then strNumOfGrants = Trim(XmlReader.ReadString())
If (XmlReader.Name.ToString() = "Grant/CLabelInfo") Then strGrant = XmlReader.ReadString()
If XmlReader.Name.ToString() = "Name" Then strGrant = XmlReader.ReadString()
' ''End If
If XmlReader.Name.ToString() = "CleanUpData/DatabankInfo/NumberOfDatabanks" Then strNumOfDatabanks = Trim(XmlReader.ReadString())
If XmlReader.Name.ToString() = "NumberOfDatabanks" Then strNumOfDatabanks = Trim(XmlReader.ReadString())
If XmlReader.Name.ToString() = "Databank/CLabelInfo" Then strDatabank = Trim(XmlReader.ReadString())
If XmlReader.Name.ToString() = "Name" Then strDatabank = XmlReader.ReadString()
If XmlReader.Name.ToString() = "Confidence" Then strWeight = XmlReader.ReadString()
If XmlReader.Name.ToString() = "Name" And XmlReader.NodeType.ToString() = "EndElement" Then
Response.Write("- Number of Grants: " & strNumOfGrants & "<br>")
Response.Write("- Grant Numbers: " & strGrant & "<br>")
End If
If XmlReader.Name.ToString() = "CleanUpData/SupportInfo/NumberOfSupports" Then strNumOfSupports = Trim(XmlReader.ReadString())
If XmlReader.Name.ToString() = "NumberOfSupports" Then strNumOfSupports = Trim(XmlReader.ReadString())
If XmlReader.Name.ToString() = "Support/CLabelInfo" Then strSupport = Trim(XmlReader.ReadString())
If XmlReader.Name.ToString() = "Name" Then strSupport = Trim(XmlReader.ReadString())
If XmlReader.Name.ToString() = "CLabelInfo" And XmlReader.NodeType.ToString() = "EndElement" Then
Response.Write("- Number of Supports: " & strNumOfSupports & "<br>")
Response.Write("- Support Number: " & strSupport & "<br>")
End If
If XmlReader.Name.ToString() = "CleanUpData/DatabankInfo/NumberOfDatabanks" Then strNumOfSupports = Trim(XmlReader.ReadString())
If XmlReader.Name.ToString() = "NumberOfDatabanks" Then strNumOfDatabanks = Trim(XmlReader.ReadString())
If XmlReader.Name.ToString() = "Databank/CLabelInfo" Then strDatabank = Trim(XmlReader.ReadString())
If XmlReader.Name.ToString() = "Name" Then strDatabank = Trim(XmlReader.ReadString())
If XmlReader.Name.ToString() = "CLabelInfo" And XmlReader.NodeType.ToString() = "EndElement" Then
Response.Write("- Number of Databanks: " & strNumOfDatabanks & "<br>")
Response.Write("- Databank Number: " & strDatabank & "<br>")
End If
End While
XmlReader.Close()
这是我的结果:
授权数量:1
- 授权号:DK30111
- 支持数量:
- 支持号码:
- 数据库数量:
- 数据库编号:
- 资助数量:1
- 拨款编号:NIHExtra
- 支持数量:1
- 支持号码:
- 数据库数量:
- 数据库编号:
- 资助数量:1
- 授权号:RefSeq/NM_007614
- 支持数量:1
- 支持号码:
- 数据库数量:
- 数据库编号:
- 资助数量:1
- 授权号:RefSeq/NM_008084
- 支持数量:1
- 支持号码:
- 数据库数量:
- 数据库编号:
- 资助数量:1
- 授权号:[未找到]
- 支持数量:1
- 支持号码:
- 数据库数量:
- 数据库编号:
【问题讨论】:
-
您是否仅限于使用
XmlReader? LINQ to XML 会更容易使用。