0

我的 Windows Phone 应用程序中有一个 Socket 通信,但是当我调用它时,有时会得到一个结果,看起来像这样

\0\0\0\0<RESULT><DATA>...</DATA></RESULT>\0 

我想删除它的开头和结尾,所以我只得到 XML,但是最好的方法是什么?我已经考虑过正则表达式,但我无法让它工作:(

4

3 回答 3

1

这听起来像是您的协议有问题,但是要删除 \0 字符,您可以对字符串进行简单的修剪。

如果您的字符串中有实际的 \ 和 0 个字符,那么您可以执行以下操作:

var fixedData = receivedData.Trim(new[] { '\\', '0' });

如果字符串以空字符开头(编码为 \0),那么您可以:

var fixedData = receivedData.Trim(new[] { '\0' });

这两个示例都假定变量 receviedData 是包含您的数据的字符串。

于 2012-08-08T10:07:00.233 回答
0

如果您的结果必须是XML并且更多字符(else \0)可以在字符串的开头或结尾,这些代码可能很有用:

var start = inputString.IndexOf('<');
var end = inputString.LastIndexOf('>');
var result = inputString.Substring(start, end - start);
于 2012-08-08T10:57:15.807 回答
0

我没有足够的信息来正确回答你,所以我会提出以下建议:

您应该尝试将从套接字接收的数据映射到可序列化的类。然后将 classObject 序列化为 XML 文档。

public class socketDataToMap
{
    public string Data {get; set;}
}

接着

var ser = new XmlSerializer(typeof(socketDataToMap));
using (var reader = XmlReader.Create(yourSocketStream))
            {
                var deserializedObject = ser.Deserialize(reader) as socketDataToMap;

            }

然后序列化为 XML 文件。我看到你的问题是这样的。

于 2012-08-08T10:08:15.773 回答