C#RegEx在行的syncML xml有效负载之前删除每一个

时间:2015-10-09 18:42:51

标签: c# regex parsing xml-parsing

我创建的程序是解析日志行。日志行还包含请求和响应方式的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 

那么如何在&lt;之前删除所有内容? xml并保留其余部分?基本上我只想要xml。

这有意义吗?

日志行看起来像这样:

    2015-10-08T10:15:01.383-0400 <bunch of other crap> request class SyncML: <?xml version="1.0  yadadada until the end.

1 个答案:

答案 0 :(得分:0)

看起来我觉得它比较简单。

 string s = line.Substring(line.IndexOf("<?xml "));

这将删除xml有效负载前面的所有内容,剩下的只是xml payLoad。

@jdweng你的权利Regex不是工具,SubString是。