【发布时间】:2015-10-09 18:42:51
【问题描述】:
我创建的程序正在解析日志行。日志行还包含请求和响应方式的 SYNCML 数据。
解析器的第一部分工作正常,它解析包含同步 ML 数据的日志行,因此只包含请求和响应日志行。现在我想从该日志行中删除所有内容,只留下 syncML 数据。我不确定我该怎么做。
这是我目前所拥有的。
Regex request = new Regex(@"request class SyncML");
Regex response = new Regex(@"response class SyncML");
string line;
while ((line = sr.ReadLine()) != null)
{
Match req = request.Match(line);
Match res = response.Match(line);
if (req.Success)
{
string v = req.Groups[1].Value;
Console.WriteLine(line);
Console.WriteLine("\t" + v);
}
if (res.Success)
{
string v = res.Groups[1].Value;
Console.WriteLine(line);
Console.WriteLine("\t" + v);
}
}
所以这一切都有效,但是这些行包含程序中包含的所有其他信息,例如日期时间和许多其他我不关心的东西。我只想要纯 XML .. xml 的每个开头都以
<?xml
那么我如何删除
这有意义吗?
日志行看起来像这样:
2015-10-08T10:15:01.383-0400 <bunch of other crap> request class SyncML: <?xml version="1.0 yadadada until the end.
【问题讨论】:
-
不要那样做。您应该使用 XML 解析器。
-
我正在解析的日志行不仅包含 xml,它还有其他信息。然后在日志行的末尾显示 syncML xml 有效负载。这正是我想要的有效载荷。
-
发布你所拥有的。正则表达式不是在这种情况下使用的工具。
-
如果我想剥离除我想要的 xml 数据之外的所有数据的一行/字符串,我应该使用哪个工具。
标签: c# regex parsing xml-parsing