1

我有以下 XML:

<?xml version="1.0" encoding="utf-8" ?>
<configuracoes>
  <gerais>
    <atualizacoes>
      <tipo>automática</tipo>
      <frequencia>diária</frequencia>
    </atualizacoes>
  </gerais>
</configuracoes>

和代码:

Dim xPathNavigator As XPathNavigator
Dim xPathNodeIterator As XPathNodeIterator

xPathNavigator = Me.XML.CreateNavigator()
xPathNodeIterator = xPathNavigator.Select("/configuracoes/gerais/atualizacoes")

While (xPathNodeIterator.MoveNext())
    Dim xPathNavigatorInterno As XPathNavigator = xPathNodeIterator.Current
    MsgBox(xPathNavigatorInterno.Value) 'It Shows "automáticadiária" instead of "automática" and then "diária" in the next iteration...
End While

我想进入第一次迭代“automática”,然后进入最后一个“diária”。怎么了?我怎么能解决这个问题?谢谢你。

4

2 回答 2

1

尝试

/configuracoes/gerais/atualizacoes/*

节点的Value始终是所有后代文本节点的连接值。这类似于 HTML,其中的值

<div>This is some <b>bold</b> text.</div>

"This is some bold text."

如果您需要单个值,请明确选择单个节点。在您的情况下,由于它们具有不同的名称,因此我使用了*.

于 2010-09-01T21:09:26.947 回答
0

另一个向前发展的考虑是使用 LINQ to XML 而不是 XPath。以我的经验,通过查询使用和导航 XML 比像 XPath 那样遍历它要容易得多。为了将来参考,请查看以下链接:

Visual Basic 中的 LINQ to XML 概述:http:
//msdn.microsoft.com/en-us/library/bb384460.aspx

于 2010-09-03T13:02:23.137 回答