是否可以在DevExpress文本编辑器中键入不可打印的ASCII控制字符?

时间:2017-11-15 15:33:28

标签: c# wpf xml-parsing devexpress

在我们的应用程序中,我们有一个简单的DevExpress文本编辑字段,它绑定到名为ProjectInfo的类的字符串属性信息:

<ViewBase xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
          xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
          ... some more declarations>

    <dxe:TextEdit Text="{Binding ProjectInfo.ConstructionProjects, UpdateSourceTrigger=PropertyChanged}"
                  HorizontalAlignment="Stretch"/>
    ...
</ViewBase>

ProjectInfo类:

public class ProjectInfo : ModelBase
{
    ...
    [XmlAttribute]
    public string ConstructionProjects{ get; set; }
    ...
}

在处理项目时,ProjectInfo保存在Session类中,并且在调用save函数时,它将存储在Project类型的对象中,其中包含其他一些数据,然后将其序列化为XML,压缩并保存在磁盘。

public class Session : INotifyPropertyChanged
{
    ...
    public bool Save(string fileName, bool updateDatabase)
    {
        Project project = new Project()
        {
            ProjectInfo = this.ProjectInfo,
            ...
        }

        using (MemoryStream documentStream = new MemoryStream())
        {
            XmlSerializer xmlSerializer = new XmlSerializer(typeof(Project));
            xmlSerializer.Serialize(documentStream, project);
            ...
        }
    }
    ...
}

它确实没有任何异常或特殊之处。然而,最近,一位客户抱怨无法打开某个项目,在检查了zip文件中的XML文件时,我偶然发现了这条令人讨厌的文本:

<ProjectInfo ConstructionProjects="Wiesenäckerweg 46, Grötzingen&#x13;&#x14;&#x7;&#x13;&#x14;&#x7;"
             ...>
    ...
</ProjectInfo>

现在,这些小的十六进制值转换为以下不可打印的ASCII控制字符:

  • x13 =设备控制3
  • x14 =设备控制4
  • x7 =贝尔

据我所知,铃声应该让接收器发出嘟嘟声,但DC3和4的含义超出了我的意思。无论如何,尝试对XML进行解密会引发无效的字符异常。

现在,当然,一个精通且精通的用户可以简单地打开zip,手动提取和修改XML,但假设他们不是。这些控制字符是否有可能仅通过我们的UI进入解析的XML文件?我尝试使用alt + 7和alt + 1,alt + 9和alt + 2,alt + 0,但实际上绘制了其他可打印字符。我也试过\但是没有转换为xml代码。有没有办法将ASCII控制字符转换为字符串,以便在XML解析后表示它们的html代码?

0 个答案:

没有答案