首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# RegEx在行的syncML xml有效负载之前删除所有内容

C# RegEx在行的syncML xml有效负载之前删除所有内容
EN

Stack Overflow用户
提问于 2015-10-09 18:42:51
回答 1查看 49关注 0票数 0

我创建的程序是解析日志行。日志行还以请求和响应方式包含SYNCML数据。

解析器的第一部分工作正常,它使用包含的同步ML数据解析日志行,因此只包含请求和响应日志行。现在,我想去掉日志行中的所有内容,只留下syncML数据。我真不知道我怎么能做到这一点。

这就是我到目前为止所拥有的。

代码语言:javascript
复制
        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的每次启动都是以

代码语言:javascript
复制
  <?xml 

那么,如何删除<之前的所有内容?还有剩下的吗?基本上我只想要xml。

这有意义吗?

日志行如下所示:

代码语言:javascript
复制
    2015-10-08T10:15:01.383-0400 <bunch of other crap> request class SyncML: <?xml version="1.0  yadadada until the end.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-09 19:36:07

看起来比我想的要容易得多。

代码语言:javascript
复制
 string s = line.Substring(line.IndexOf("<?xml "));

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

@jdweng您的右Regex不是工具,而是SubString。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33045157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档