【问题标题】:C# Reading a text file that also contains XMLC# 读取也包含 XML 的文本文件
【发布时间】:2015-05-11 09:41:56
【问题描述】:

我正在读取文本文件并输出内容。在文本文件中有一些随机的 XML 行。虽然我可以读入并显示文本文件中的文本,但存在一个问题,即没有任何 xml 被读入或显示。 这是我的代码:

这是文本文件的路径

    string strFilePath = @"C:\Users\Desktop\docs\textFile1.txt";

这是基于日期和时间分离文本文件的正则表达式,因此我可以按日期和时间的顺序显示内容

    string strRegXPattern = @"(?<date>(?<day>\d{1,2})-(?<month>\d{1,2})-(?<year>(?:\d{4}|\d{2}))\s(?<time>(?<hour>\d{2}):(?<minutes>\d{2}):(?<seconds>\d{2})(?<milli>\.?\d{0,3}))):\s(?<textEntry>.*)";

在这里,我将 strFilePath 和 strRegXPattern 添加到方法 ReadFileText() 以读取文本文件。内容被添加到行列表中。

    lstLines.AddRange(base.ReadFileText(strFilePath, strRegXPattern));

所有这些都适用于文本文件中的文本。然后我根据日期和时间合并所有行并按顺序显示。除了文本文件中随处可见的几行随机 XML 之外,一切都正常工作并显示。

显示文本和 XML 的文本文件的示例内容:

    13-01-2015 12:33:39: Some text here.....
    13-01-2015 12:33:41: Some text here.....
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Request >
    <RequestType>1</RequestType>
    <TsTxnId>123456</TsTxnId>
    </Request>
    13-01-2015 12:34:16: Some text here.....
    13-01-2015 12:34:16: Some text here.....

我想读入并输出它,使它看起来一样,并且按顺序排列。现在输出的是以下内容:

    13-01-2015 12:33:39: Some text here.....
    13-01-2015 12:33:41: Some text here.....
    13-01-2015 12:34:16: Some text here.....
    13-01-2015 12:34:16: Some text here.....

没有任何 XML 输出?

我的问题是:谁能告诉我如何包含 XML,以便它可以被读入并与文本文件中的其他标准文本行一起显示?目前它根本没有被读入或显示。 谢谢。

【问题讨论】:

  • 您能否提供输入和所需的输出?如果没有这些细节,就不可能为您提供帮助。
  • 嗨@stribizhev。我现在已经添加了。
  • 你的ReadFileText 例程中一定有什么奇怪的地方。对于通常的读/写例程,xml 只是纯文本。
  • 另外,我一次读取多个文件,而不仅仅是一个。我正在阅读它们,合并它们并按日期和时间的顺序输出到一个更大的文件。除了没有出现 XML 之外,一切正常。
  • 将其分解为包含 xml 的一行。使用调试器,检查变量内容。你的哪一行代码出错了?

标签: c# regex xml


【解决方案1】:

您可以使用以下内容:

string strRegXPattern = @"(?<date>(?<day>\d{1,2})-(?<month>\d{1,2})-(?<year>(?:\d{4}|\d{2}))\s(?<time>(?<hour>\d{2}):(?<minutes>\d{2}):(?<seconds>\d{2})(?<milli>\.?\d{0,3}))):\s(?<textEntry>[\s\S]*?)(?=(?:\d{1,2}-\d{1,2}-(?:\d{4}|\d{2})\s\d{2}:\d{2}:\d{2}\.?\d{0,3})|$)";

我让你的正则表达式接受多行添加[\s\S].. 这样它也可以捕获其他行中的文本.. 并使其非贪婪? 这样它就不会捕获下一个模式。

DEMO

【讨论】:

  • 嗨@karthik manchala。谢谢你。我试过这个,但不幸的是它不起作用。使用此 RegEx,文本条目根本不显示。
猜你喜欢
  • 1970-01-01
  • 2011-10-30
  • 1970-01-01
  • 2013-10-26
  • 2014-08-10
  • 2021-02-04
  • 1970-01-01
  • 1970-01-01
  • 2021-10-16
相关资源
最近更新 更多