我正在尝试创建一个VB.net应用程序,它从XML文件(或ini文件,无关紧要)读取每一行,它指示字符串的名称应该是什么。
E.g
"string1 = xml.line1"
"string2 = xml.line2"
等
这样做的最佳方法是什么? 我已经使用Xml.XmlTextReader进行了一些操作,它似乎完成了这项工作,但是我无法分解每一行,因为它是自己的字符串?
答案 0 :(得分:1)
在XML文档中,一行很少是有用的概念。例如:
<foo>
<bar first="x"
second="y" />
</foo>
相当于
<foo>
<bar first="x" second="y" />
</foo>
通常,您要查询单个元素而不是行的XML文档。但是,在.ini文件中,一条线会更加明智。
这里的大局是什么?你想要实现什么目标?
如果你需要阅读文本文件的所有行(但你不需要一次全部在内存中)我建议使用File.OpenText
返回TextReader
,然后调用ReadLine()
并一直处理字符串,直到返回的行为Nothing
(这意味着您已到达文件的末尾)。不要忘记用Using
语句包装读者。
编辑:如果你不需要文件中的任何其他内容,那么我每行只写一个条目,你基本上就完成了。另一方面,这意味着如果您需要任何其他配置信息,则需要更改所有内容。
使用ini文件会相当简单,但您必须编写代码来解析它。 (诚然,可能会有第三方图书馆为你做这件事。我在以前的公司写过一篇,但这并不需要很长时间。)
使用XML文件会在值周围引入更多“漏洞”,但读取起来会非常简单,特别是如果您使用的是.NET 3.5和LINQ to XML。例如,您可以拥有这样的文件:
<Configuration>
<RegistryEntries>
<RegistryEntry>First</RegistryEntry>
<RegistryEntry>Second</RegistryEntry>
<RegistryEntry>Third</RegistryEntry>
</RegistryEntries>
</Configuration>
并通过执行以下操作获取条目序列:
document.Root.Element("RegistryEntries")
.Elements("RegistryEntry")
.Select(e => e.Value);
作为另一种选择,您可以使用.NET的内置配置/设置功能。您是否尝试过使用项目属性的“设置”部分?
答案 1 :(得分:0)
如果您逐行处理XML并希望忽略XML语义,则应将其视为纯文本文件并在每行上运行正则表达式:
Dim lines = File.GetAllLines("file.xml")
' Check the lines (which is a String array) for the criteria