[英]How to read each XML lines into specified strings?
我正在尝试创建一个VB.net应用程序,该应用程序从指示文件名的XML文件(或ini文件,没关系)中读取每一行。
例如
"string1 = xml.line1"
"string2 = xml.line2"
等等
这样做的最佳方法是什么? 我已经对Xml.XmlTextReader进行了一些修饰,似乎可以完成工作,但是由于每行都是自己的字符串,所以我无法将其分解吗?
在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的内置配置/设置功能。 您是否尝试过使用项目属性的“设置”部分?
如果要逐行处理XML,并且想忽略XML语义,则应将其视为纯文本文件,并在每行上运行一个正则表达式或类似的东西:
Dim lines = File.GetAllLines("file.xml")
' Check the lines (which is a String array) for the criteria
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.