【发布时间】:2014-12-05 22:12:52
【问题描述】:
我是一名 VB6 资深人士,逐渐掌握了 VB.NET。我有一个正在尝试使用 XML 文件配置的工作应用程序(基本应用程序设置除外)。
我想从文件中的单个 XML 节点读取元素并创建一个字符串数组。我搜索了这个站点和其他站点,发现了许多执行非常相似的操作的示例,但不能完全掌握它(特别是如果问题/答案是用 C# 编写的)。
我不是 XML 专家,但我知道如何选择单个节点,并且我可以编写一些相当简洁的代码,这些代码将遍历子元素并使用 redim 手动构建数组,这样可以正常工作。但是...我正在尝试通过具体示例来学习新技术。
所以...看来,我应该能够编写一个 LINQ 查询并使用 .ToArray() 扩展方法来填充数组,而无需使用循环构造。
p>这是我的 XML 的表示:
<?xml version="1.0"?>
<targets>
<target name="abc">
<index>0</index>
<randoms>
<string>index</string>
<string>local</string>
<string>news</string>
<string>journal</string>
<string>information</string>
</randoms>
</target>
<target name="xyz">
<index>1</index>
<randoms>
<string>cat</string>
<string>dog</string>
<string>mouse</string>
</randoms>
</target>
</targets>
我想要构建数组的元素是“字符串”元素。在我的代码中,我将使用目标索引来选择适当的节点(会有“随机”以外的节点,但它们与本示例无关。
【问题讨论】:
-
顺便说一句,我也从 VB6 迁移到 VB.Net,但那是几年前的事了。您应该尽可能多地采用 .NET 类。序列化可以使这种事情变得更容易。会有解析或迭代XML的解决方案,但我相信这种方法更清晰,更面向对象。
-
我很欣赏 cmets @Verdolino(很快就会强调使用序列化),但您的回答并未证明 LINQ 和 .ToArray() 扩展方法的使用。
-
考虑第一个示例,如果您已序列化到
XmlModel类,则不需要使用ToArray()。该类有一个List(Of XmlMob),它是 IEnumerable。
标签: arrays vb.net linq-to-xml