我创建的程序是解析日志行。日志行还以请求和响应方式包含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 那么,如何删除<之前的所有内容?还有剩下的吗?基本上我只想要xml。
这有意义吗?
日志行如下所示:
2015-10-08T10:15:01.383-0400 <bunch of other crap> request class SyncML: <?xml version="1.0 yadadada until the end.发布于 2015-10-09 19:36:07
看起来比我想的要容易得多。
string s = line.Substring(line.IndexOf("<?xml "));这将移除xml有效负载的前面所有内容,剩下的只是xml payLoad。
@jdweng您的右Regex不是工具,而是SubString。
https://stackoverflow.com/questions/33045157
复制相似问题