繁体   English   中英

如何将每条XML行读入指定的字符串?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM