C# 解压缩数据流组件:未知块类型。流可能已损坏

C# 解压缩数据流组件:未知块类型。流可能已损坏,c#,xml,stream,deserialization,C#,Xml,Stream,Deserialization,我正在尝试解压缩/反序列化保存在XML文件属性中的数据流。数据是用Delphi的Stream.WriteComponent()方法压缩的。它最终抛出了这个错误: 例外情况: System.IO.InvalidDataException:未知的块类型。流可能已损坏 首先,我使用XML LINQ查询检索数据流: var dataStream = ( from XmlNode xn in nList where xn?.Attributes != null &&am

我正在尝试解压缩/反序列化保存在XML文件属性中的数据流。数据是用Delphi的
Stream.WriteComponent()方法压缩的。它最终抛出了这个错误:

例外情况: System.IO.InvalidDataException:未知的块类型。流可能已损坏

首先,我使用XML LINQ查询检索数据流:

var dataStream = 
(
    from XmlNode xn in nList
    where xn?.Attributes != null 
    && xn?.Attributes["Name"].InnerText == "Columns"
    select xn.Attributes["StreamData"].InnerText
).ToList()[0x0];
if (string.IsNullOrEmpty(dataStream) { return; }
var byteStream = Encoding.UTF8.GetBytes(dataStream);
var memStream = new MemoryStream
(
    byteStream,
    0,
    byteStream.Length,
    true,
    true
);
var rslt = Decompress(stream);
public static string Decompress(MemoryStream stream)
{
    using (var uncompressed = new MemoryStream())
    using (var compressed = stream)
    using (var ds = new DeflatedStream(compressed, CompressionMode.Decompress))
    {
        ds.CopyTo(uncompressed);
        return Encoding.UTF8.GetString(uncompressed.ToArray());
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<Item Class="Item" Name="Default" GUID="{BC0EE2E4-641F-44DA-A989-F97C58B1828D}">
  <Properties>
    <Property Class="Type" GUID="{3A6C51FB-BE2E-4DBF-B2C5-8EB7C3508529}" Name="Type" group="Item" OrderIndex="0" DecimalPlaces="2">blah</Property>
    <Property Class="Text" GUID="{1119FF79-74C6-42AF-918F-1AF485614D07}" Name="Name" inheritaction="Ignore" required="True" group="Item" OrderIndex="1" DecimalPlaces="2">blahblah</Property>
    <Property Class="Number" GUID="{AF1BC5FD-A4DD-4610-92EE-2F7D7EA4FA64}" Name="OrderIndex" systemhidden="True" OrderIndex="3" DecimalPlaces="2">0</Property>
    <Property Class="Text" GUID="{176382CA-7E00-47C2-8DD3-82A9ED4FB973}" Name="GUID" inheritaction="Ignore" systemlocked="True" systemhidden="True" OrderIndex="4" DecimalPlaces="2">{BC0EE2E4-641F-44DA-A989-F97C58B1828D}</Property>
    <Property Class="Stream" GUID="{833CB9FD-4914-4899-B757-CC9C130E6914}" Name="Columns" OrderIndex="5" DecimalPlaces="2" StreamData="VFBGMB1UcHNjeEVzdGltYXRpbmdUcmVlTGlzdENvbHVtbgZDb2x1bW4MQ2FwdGlvbi5UZXh0BgROYW1lFURhdGFCaW5kaW5nLlZhbHVlVHlwZQYGU3RyaW5nBVdpZHRoAzgBEVBvc2l0aW9uLkNvbEluZGV4AgARUG9zaXRpb24uUm93SW5kZXgCABJQb3NpdGlvbi5CYW5kSW5kZXgCAAlTaG93VW5pdHMIDUlzVW5pdHNDb2x1bW4IAABUUEYwHVRwc2N4RXN0aW1hdGluZ1RyZWVMaXN0Q29sdW1uB0NvbHVtbjIMQ2FwdGlvbi5UZXh0BgtEZXNjcmlwdGlvbhVEYXRhQmluZGluZy5WYWx1ZVR5cGUGBlN0cmluZwVXaWR0aAJsEVBvc2l0aW9uLkNvbEluZGV4AgERUG9zaXRpb24uUm93SW5kZXgCABJQb3NpdGlvbi5CYW5kSW5kZXgCAAlTaG93VW5pdHMIDUlzVW5pdHNDb2x1bW4IAABUUEYwHVRwc2N4RXN0aW1hdGluZ1RyZWVMaXN0Q29sdW1uD1RyZWVMaXN0Q29sdW1uMhNQcm9wZXJ0aWVzQ2xhc3NOYW1lBhJUY3hMYWJlbFByb3BlcnRpZXMZUHJvcGVydGllcy5BbGlnbm1lbnQuSG9yegcNdGFMZWZ0SnVzdGlmeQxDYXB0aW9uLlRleHQGBUNvbG9yFURhdGFCaW5kaW5nLlZhbHVlVHlwZQYGU3RyaW5nBVdpZHRoAiwRUG9zaXRpb24uQ29sSW5kZXgCCBFQb3NpdGlvbi5Sb3dJbmRleAIAElBvc2l0aW9uLkJhbmRJbmRleAIACVNob3dVbml0cwgNSXNVbml0c0NvbHVtbggAAFRQRjAdVHBzY3hFc3RpbWF0aW5nVHJlZUxpc3RDb2x1bW4OVHJlZUxpc3RDb2x1bW4TUHJvcGVydGllc0NsYXNzTmFtZQYSVGN4TGFiZWxQcm9wZXJ0aWVzGVByb3BlcnRpZXMuQWxpZ25tZW50LkhvcnoHDnRhUmlnaHRKdXN0aWZ5DENhcHRpb24uVGV4dAYDUXR5FURhdGFCaW5kaW5nLlZhbHVlVHlwZQYFRmxvYXQOT3B0aW9ucy5Gb290ZXIJBVdpZHRoAmQRUG9zaXRpb24uQ29sSW5kZXgCAhFQb3NpdGlvbi5Sb3dJbmRleAIAElBvc2l0aW9uLkJhbmRJbmRleAIAElN1bW1hcnlGb290ZXIuS2luZAcFc2tTdW0JU2hvd1VuaXRzCQ1Jc1VuaXRzQ29sdW1uCAAAVFBGMB1UcHNjeEVzdGltYXRpbmdUcmVlTGlzdENvbHVtbg9UcmVlTGlzdENvbHVtbjQTUHJvcGVydGllc0NsYXNzTmFtZQYSVGN4TGFiZWxQcm9wZXJ0aWVzGVByb3BlcnRpZXMuQWxpZ25tZW50LkhvcnoHDnRhUmlnaHRKdXN0aWZ5DENhcHRpb24uVGV4dAYKUHJpY2UgRWFjaBVEYXRhQmluZGluZy5WYWx1ZVR5cGUGBUZsb2F0Dk9wdGlvbnMuRm9vdGVyCQVXaWR0aAJkEVBvc2l0aW9uLkNvbEluZGV4AgYRUG9zaXRpb24uUm93SW5kZXgCABJQb3NpdGlvbi5CYW5kSW5kZXgCABJTdW1tYXJ5Rm9vdGVyLktpbmQHBXNrU3VtCVNob3dVbml0cwgNSXNVbml0c0NvbHVtbggAAFRQRjAdVHBzY3hFc3RpbWF0aW5nVHJlZUxpc3RDb2x1bW4PVHJlZUxpc3RDb2x1bW41E1Byb3BlcnRpZXNDbGFzc05hbWUGElRjeExhYmVsUHJvcGVydGllcxlQcm9wZXJ0aWVzLkFsaWdubWVudC5Ib3J6Bw50YVJpZ2h0SnVzdGlmeQxDYXB0aW9uLlRleHQGC1ByaWNlIFRvdGFsFURhdGFCaW5kaW5nLlZhbHVlVHlwZQYFRmxvYXQOT3B0aW9ucy5Gb290ZXIJBVdpZHRoAmQRUG9zaXRpb24uQ29sSW5kZXgCBxFQb3NpdGlvbi5Sb3dJbmRleAIAElBvc2l0aW9uLkJhbmRJbmRleAIAFFN1bW1hcnlGb290ZXIuRm9ybWF0Bg1bIUNVXSMsIyMwLjAwElN1bW1hcnlGb290ZXIuS2luZAcFc2tTdW0JU2hvd1VuaXRzCA1Jc1VuaXRzQ29sdW1uCAAAVFBGMB1UcHNjeEVzdGltYXRpbmdUcmVlTGlzdENvbHVtbg5HcmlkVW50c0NvbHVtbgxDYXB0aW9uLlRleHQGBVVuaXRzFURhdGFCaW5kaW5nLlZhbHVlVHlwZQYGU3RyaW5nD09wdGlvbnMuRWRpdGluZwgFV2lkdGgCMRFQb3NpdGlvbi5Db2xJbmRleAIDEVBvc2l0aW9uLlJvd0luZGV4AgASUG9zaXRpb24uQmFuZEluZGV4AgAJU2hvd1VuaXRzCA1Jc1VuaXRzQ29sdW1uCQ1Vbml0Rm9yQ29sdW1uBgNRdHkAAFRQRjAdVHBzY3hFc3RpbWF0aW5nVHJlZUxpc3RDb2x1bW4PVHJlZUxpc3RDb2x1bW4zE1Byb3BlcnRpZXNDbGFzc05hbWUGElRjeExhYmVsUHJvcGVydGllcxlQcm9wZXJ0aWVzLkFsaWdubWVudC5Ib3J6Bw50YVJpZ2h0SnVzdGlmeQxDYXB0aW9uLlRleHQGCUNvc3QgRWFjaBVEYXRhQmluZGluZy5WYWx1ZVR5cGUGBUZsb2F0Dk9wdGlvbnMuRm9vdGVyCQVXaWR0aAJkEVBvc2l0aW9uLkNvbEluZGV4AgQRUG9zaXRpb24uUm93SW5kZXgCABJQb3NpdGlvbi5CYW5kSW5kZXgCABRTdW1tYXJ5Rm9vdGVyLkZvcm1hdAYNWyFDVV0jLCMjMC4wMBJTdW1tYXJ5Rm9vdGVyLktpbmQHBXNrU3VtCVNob3dVbml0cwgNSXNVbml0c0NvbHVtbggAAFRQRjAdVHBzY3hFc3RpbWF0aW5nVHJlZUxpc3RDb2x1bW4PVHJlZUxpc3RDb2x1bW42E1Byb3BlcnRpZXNDbGFzc05hbWUGElRjeExhYmVsUHJvcGVydGllcxlQcm9wZXJ0aWVzLkFsaWdubWVudC5Ib3J6Bw50YVJpZ2h0SnVzdGlmeQxDYXB0aW9uLlRleHQGCE1hcmt1cCAlFURhdGFCaW5kaW5nLlZhbHVlVHlwZQYFRmxvYXQOT3B0aW9ucy5Gb290ZXIJBVdpZHRoAkMRUG9zaXRpb24uQ29sSW5kZXgCBRFQb3NpdGlvbi5Sb3dJbmRleAIAElBvc2l0aW9uLkJhbmRJbmRleAIAElN1bW1hcnlGb290ZXIuS2luZAcFc2tTdW0JU2hvd1VuaXRzCA1Jc1VuaXRzQ29sdW1uCAAA"/>

  </Properties>
</Item>
然后我继续将XML属性InnerText转换为流数据:

var dataStream = 
(
    from XmlNode xn in nList
    where xn?.Attributes != null 
    && xn?.Attributes["Name"].InnerText == "Columns"
    select xn.Attributes["StreamData"].InnerText
).ToList()[0x0];
if (string.IsNullOrEmpty(dataStream) { return; }
var byteStream = Encoding.UTF8.GetBytes(dataStream);
var memStream = new MemoryStream
(
    byteStream,
    0,
    byteStream.Length,
    true,
    true
);
var rslt = Decompress(stream);
public static string Decompress(MemoryStream stream)
{
    using (var uncompressed = new MemoryStream())
    using (var compressed = stream)
    using (var ds = new DeflatedStream(compressed, CompressionMode.Decompress))
    {
        ds.CopyTo(uncompressed);
        return Encoding.UTF8.GetString(uncompressed.ToArray());
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<Item Class="Item" Name="Default" GUID="{BC0EE2E4-641F-44DA-A989-F97C58B1828D}">
  <Properties>
    <Property Class="Type" GUID="{3A6C51FB-BE2E-4DBF-B2C5-8EB7C3508529}" Name="Type" group="Item" OrderIndex="0" DecimalPlaces="2">blah</Property>
    <Property Class="Text" GUID="{1119FF79-74C6-42AF-918F-1AF485614D07}" Name="Name" inheritaction="Ignore" required="True" group="Item" OrderIndex="1" DecimalPlaces="2">blahblah</Property>
    <Property Class="Number" GUID="{AF1BC5FD-A4DD-4610-92EE-2F7D7EA4FA64}" Name="OrderIndex" systemhidden="True" OrderIndex="3" DecimalPlaces="2">0</Property>
    <Property Class="Text" GUID="{176382CA-7E00-47C2-8DD3-82A9ED4FB973}" Name="GUID" inheritaction="Ignore" systemlocked="True" systemhidden="True" OrderIndex="4" DecimalPlaces="2">{BC0EE2E4-641F-44DA-A989-F97C58B1828D}</Property>
    <Property Class="Stream" GUID="{833CB9FD-4914-4899-B757-CC9C130E6914}" Name="Columns" OrderIndex="5" DecimalPlaces="2" StreamData="VFBGMB1UcHNjeEVzdGltYXRpbmdUcmVlTGlzdENvbHVtbgZDb2x1bW4MQ2FwdGlvbi5UZXh0BgROYW1lFURhdGFCaW5kaW5nLlZhbHVlVHlwZQYGU3RyaW5nBVdpZHRoAzgBEVBvc2l0aW9uLkNvbEluZGV4AgARUG9zaXRpb24uUm93SW5kZXgCABJQb3NpdGlvbi5CYW5kSW5kZXgCAAlTaG93VW5pdHMIDUlzVW5pdHNDb2x1bW4IAABUUEYwHVRwc2N4RXN0aW1hdGluZ1RyZWVMaXN0Q29sdW1uB0NvbHVtbjIMQ2FwdGlvbi5UZXh0BgtEZXNjcmlwdGlvbhVEYXRhQmluZGluZy5WYWx1ZVR5cGUGBlN0cmluZwVXaWR0aAJsEVBvc2l0aW9uLkNvbEluZGV4AgERUG9zaXRpb24uUm93SW5kZXgCABJQb3NpdGlvbi5CYW5kSW5kZXgCAAlTaG93VW5pdHMIDUlzVW5pdHNDb2x1bW4IAABUUEYwHVRwc2N4RXN0aW1hdGluZ1RyZWVMaXN0Q29sdW1uD1RyZWVMaXN0Q29sdW1uMhNQcm9wZXJ0aWVzQ2xhc3NOYW1lBhJUY3hMYWJlbFByb3BlcnRpZXMZUHJvcGVydGllcy5BbGlnbm1lbnQuSG9yegcNdGFMZWZ0SnVzdGlmeQxDYXB0aW9uLlRleHQGBUNvbG9yFURhdGFCaW5kaW5nLlZhbHVlVHlwZQYGU3RyaW5nBVdpZHRoAiwRUG9zaXRpb24uQ29sSW5kZXgCCBFQb3NpdGlvbi5Sb3dJbmRleAIAElBvc2l0aW9uLkJhbmRJbmRleAIACVNob3dVbml0cwgNSXNVbml0c0NvbHVtbggAAFRQRjAdVHBzY3hFc3RpbWF0aW5nVHJlZUxpc3RDb2x1bW4OVHJlZUxpc3RDb2x1bW4TUHJvcGVydGllc0NsYXNzTmFtZQYSVGN4TGFiZWxQcm9wZXJ0aWVzGVByb3BlcnRpZXMuQWxpZ25tZW50LkhvcnoHDnRhUmlnaHRKdXN0aWZ5DENhcHRpb24uVGV4dAYDUXR5FURhdGFCaW5kaW5nLlZhbHVlVHlwZQYFRmxvYXQOT3B0aW9ucy5Gb290ZXIJBVdpZHRoAmQRUG9zaXRpb24uQ29sSW5kZXgCAhFQb3NpdGlvbi5Sb3dJbmRleAIAElBvc2l0aW9uLkJhbmRJbmRleAIAElN1bW1hcnlGb290ZXIuS2luZAcFc2tTdW0JU2hvd1VuaXRzCQ1Jc1VuaXRzQ29sdW1uCAAAVFBGMB1UcHNjeEVzdGltYXRpbmdUcmVlTGlzdENvbHVtbg9UcmVlTGlzdENvbHVtbjQTUHJvcGVydGllc0NsYXNzTmFtZQYSVGN4TGFiZWxQcm9wZXJ0aWVzGVByb3BlcnRpZXMuQWxpZ25tZW50LkhvcnoHDnRhUmlnaHRKdXN0aWZ5DENhcHRpb24uVGV4dAYKUHJpY2UgRWFjaBVEYXRhQmluZGluZy5WYWx1ZVR5cGUGBUZsb2F0Dk9wdGlvbnMuRm9vdGVyCQVXaWR0aAJkEVBvc2l0aW9uLkNvbEluZGV4AgYRUG9zaXRpb24uUm93SW5kZXgCABJQb3NpdGlvbi5CYW5kSW5kZXgCABJTdW1tYXJ5Rm9vdGVyLktpbmQHBXNrU3VtCVNob3dVbml0cwgNSXNVbml0c0NvbHVtbggAAFRQRjAdVHBzY3hFc3RpbWF0aW5nVHJlZUxpc3RDb2x1bW4PVHJlZUxpc3RDb2x1bW41E1Byb3BlcnRpZXNDbGFzc05hbWUGElRjeExhYmVsUHJvcGVydGllcxlQcm9wZXJ0aWVzLkFsaWdubWVudC5Ib3J6Bw50YVJpZ2h0SnVzdGlmeQxDYXB0aW9uLlRleHQGC1ByaWNlIFRvdGFsFURhdGFCaW5kaW5nLlZhbHVlVHlwZQYFRmxvYXQOT3B0aW9ucy5Gb290ZXIJBVdpZHRoAmQRUG9zaXRpb24uQ29sSW5kZXgCBxFQb3NpdGlvbi5Sb3dJbmRleAIAElBvc2l0aW9uLkJhbmRJbmRleAIAFFN1bW1hcnlGb290ZXIuRm9ybWF0Bg1bIUNVXSMsIyMwLjAwElN1bW1hcnlGb290ZXIuS2luZAcFc2tTdW0JU2hvd1VuaXRzCA1Jc1VuaXRzQ29sdW1uCAAAVFBGMB1UcHNjeEVzdGltYXRpbmdUcmVlTGlzdENvbHVtbg5HcmlkVW50c0NvbHVtbgxDYXB0aW9uLlRleHQGBVVuaXRzFURhdGFCaW5kaW5nLlZhbHVlVHlwZQYGU3RyaW5nD09wdGlvbnMuRWRpdGluZwgFV2lkdGgCMRFQb3NpdGlvbi5Db2xJbmRleAIDEVBvc2l0aW9uLlJvd0luZGV4AgASUG9zaXRpb24uQmFuZEluZGV4AgAJU2hvd1VuaXRzCA1Jc1VuaXRzQ29sdW1uCQ1Vbml0Rm9yQ29sdW1uBgNRdHkAAFRQRjAdVHBzY3hFc3RpbWF0aW5nVHJlZUxpc3RDb2x1bW4PVHJlZUxpc3RDb2x1bW4zE1Byb3BlcnRpZXNDbGFzc05hbWUGElRjeExhYmVsUHJvcGVydGllcxlQcm9wZXJ0aWVzLkFsaWdubWVudC5Ib3J6Bw50YVJpZ2h0SnVzdGlmeQxDYXB0aW9uLlRleHQGCUNvc3QgRWFjaBVEYXRhQmluZGluZy5WYWx1ZVR5cGUGBUZsb2F0Dk9wdGlvbnMuRm9vdGVyCQVXaWR0aAJkEVBvc2l0aW9uLkNvbEluZGV4AgQRUG9zaXRpb24uUm93SW5kZXgCABJQb3NpdGlvbi5CYW5kSW5kZXgCABRTdW1tYXJ5Rm9vdGVyLkZvcm1hdAYNWyFDVV0jLCMjMC4wMBJTdW1tYXJ5Rm9vdGVyLktpbmQHBXNrU3VtCVNob3dVbml0cwgNSXNVbml0c0NvbHVtbggAAFRQRjAdVHBzY3hFc3RpbWF0aW5nVHJlZUxpc3RDb2x1bW4PVHJlZUxpc3RDb2x1bW42E1Byb3BlcnRpZXNDbGFzc05hbWUGElRjeExhYmVsUHJvcGVydGllcxlQcm9wZXJ0aWVzLkFsaWdubWVudC5Ib3J6Bw50YVJpZ2h0SnVzdGlmeQxDYXB0aW9uLlRleHQGCE1hcmt1cCAlFURhdGFCaW5kaW5nLlZhbHVlVHlwZQYFRmxvYXQOT3B0aW9ucy5Gb290ZXIJBVdpZHRoAkMRUG9zaXRpb24uQ29sSW5kZXgCBRFQb3NpdGlvbi5Sb3dJbmRleAIAElBvc2l0aW9uLkJhbmRJbmRleAIAElN1bW1hcnlGb290ZXIuS2luZAcFc2tTdW0JU2hvd1VuaXRzCA1Jc1VuaXRzQ29sdW1uCAAA"/>

  </Properties>
</Item>
然后我继续尝试解压数据流:

var dataStream = 
(
    from XmlNode xn in nList
    where xn?.Attributes != null 
    && xn?.Attributes["Name"].InnerText == "Columns"
    select xn.Attributes["StreamData"].InnerText
).ToList()[0x0];
if (string.IsNullOrEmpty(dataStream) { return; }
var byteStream = Encoding.UTF8.GetBytes(dataStream);
var memStream = new MemoryStream
(
    byteStream,
    0,
    byteStream.Length,
    true,
    true
);
var rslt = Decompress(stream);
public static string Decompress(MemoryStream stream)
{
    using (var uncompressed = new MemoryStream())
    using (var compressed = stream)
    using (var ds = new DeflatedStream(compressed, CompressionMode.Decompress))
    {
        ds.CopyTo(uncompressed);
        return Encoding.UTF8.GetString(uncompressed.ToArray());
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<Item Class="Item" Name="Default" GUID="{BC0EE2E4-641F-44DA-A989-F97C58B1828D}">
  <Properties>
    <Property Class="Type" GUID="{3A6C51FB-BE2E-4DBF-B2C5-8EB7C3508529}" Name="Type" group="Item" OrderIndex="0" DecimalPlaces="2">blah</Property>
    <Property Class="Text" GUID="{1119FF79-74C6-42AF-918F-1AF485614D07}" Name="Name" inheritaction="Ignore" required="True" group="Item" OrderIndex="1" DecimalPlaces="2">blahblah</Property>
    <Property Class="Number" GUID="{AF1BC5FD-A4DD-4610-92EE-2F7D7EA4FA64}" Name="OrderIndex" systemhidden="True" OrderIndex="3" DecimalPlaces="2">0</Property>
    <Property Class="Text" GUID="{176382CA-7E00-47C2-8DD3-82A9ED4FB973}" Name="GUID" inheritaction="Ignore" systemlocked="True" systemhidden="True" OrderIndex="4" DecimalPlaces="2">{BC0EE2E4-641F-44DA-A989-F97C58B1828D}</Property>
    <Property Class="Stream" GUID="{833CB9FD-4914-4899-B757-CC9C130E6914}" Name="Columns" OrderIndex="5" DecimalPlaces="2" StreamData="VFBGMB1UcHNjeEVzdGltYXRpbmdUcmVlTGlzdENvbHVtbgZDb2x1bW4MQ2FwdGlvbi5UZXh0BgROYW1lFURhdGFCaW5kaW5nLlZhbHVlVHlwZQYGU3RyaW5nBVdpZHRoAzgBEVBvc2l0aW9uLkNvbEluZGV4AgARUG9zaXRpb24uUm93SW5kZXgCABJQb3NpdGlvbi5CYW5kSW5kZXgCAAlTaG93VW5pdHMIDUlzVW5pdHNDb2x1bW4IAABUUEYwHVRwc2N4RXN0aW1hdGluZ1RyZWVMaXN0Q29sdW1uB0NvbHVtbjIMQ2FwdGlvbi5UZXh0BgtEZXNjcmlwdGlvbhVEYXRhQmluZGluZy5WYWx1ZVR5cGUGBlN0cmluZwVXaWR0aAJsEVBvc2l0aW9uLkNvbEluZGV4AgERUG9zaXRpb24uUm93SW5kZXgCABJQb3NpdGlvbi5CYW5kSW5kZXgCAAlTaG93VW5pdHMIDUlzVW5pdHNDb2x1bW4IAABUUEYwHVRwc2N4RXN0aW1hdGluZ1RyZWVMaXN0Q29sdW1uD1RyZWVMaXN0Q29sdW1uMhNQcm9wZXJ0aWVzQ2xhc3NOYW1lBhJUY3hMYWJlbFByb3BlcnRpZXMZUHJvcGVydGllcy5BbGlnbm1lbnQuSG9yegcNdGFMZWZ0SnVzdGlmeQxDYXB0aW9uLlRleHQGBUNvbG9yFURhdGFCaW5kaW5nLlZhbHVlVHlwZQYGU3RyaW5nBVdpZHRoAiwRUG9zaXRpb24uQ29sSW5kZXgCCBFQb3NpdGlvbi5Sb3dJbmRleAIAElBvc2l0aW9uLkJhbmRJbmRleAIACVNob3dVbml0cwgNSXNVbml0c0NvbHVtbggAAFRQRjAdVHBzY3hFc3RpbWF0aW5nVHJlZUxpc3RDb2x1bW4OVHJlZUxpc3RDb2x1bW4TUHJvcGVydGllc0NsYXNzTmFtZQYSVGN4TGFiZWxQcm9wZXJ0aWVzGVByb3BlcnRpZXMuQWxpZ25tZW50LkhvcnoHDnRhUmlnaHRKdXN0aWZ5DENhcHRpb24uVGV4dAYDUXR5FURhdGFCaW5kaW5nLlZhbHVlVHlwZQYFRmxvYXQOT3B0aW9ucy5Gb290ZXIJBVdpZHRoAmQRUG9zaXRpb24uQ29sSW5kZXgCAhFQb3NpdGlvbi5Sb3dJbmRleAIAElBvc2l0aW9uLkJhbmRJbmRleAIAElN1bW1hcnlGb290ZXIuS2luZAcFc2tTdW0JU2hvd1VuaXRzCQ1Jc1VuaXRzQ29sdW1uCAAAVFBGMB1UcHNjeEVzdGltYXRpbmdUcmVlTGlzdENvbHVtbg9UcmVlTGlzdENvbHVtbjQTUHJvcGVydGllc0NsYXNzTmFtZQYSVGN4TGFiZWxQcm9wZXJ0aWVzGVByb3BlcnRpZXMuQWxpZ25tZW50LkhvcnoHDnRhUmlnaHRKdXN0aWZ5DENhcHRpb24uVGV4dAYKUHJpY2UgRWFjaBVEYXRhQmluZGluZy5WYWx1ZVR5cGUGBUZsb2F0Dk9wdGlvbnMuRm9vdGVyCQVXaWR0aAJkEVBvc2l0aW9uLkNvbEluZGV4AgYRUG9zaXRpb24uUm93SW5kZXgCABJQb3NpdGlvbi5CYW5kSW5kZXgCABJTdW1tYXJ5Rm9vdGVyLktpbmQHBXNrU3VtCVNob3dVbml0cwgNSXNVbml0c0NvbHVtbggAAFRQRjAdVHBzY3hFc3RpbWF0aW5nVHJlZUxpc3RDb2x1bW4PVHJlZUxpc3RDb2x1bW41E1Byb3BlcnRpZXNDbGFzc05hbWUGElRjeExhYmVsUHJvcGVydGllcxlQcm9wZXJ0aWVzLkFsaWdubWVudC5Ib3J6Bw50YVJpZ2h0SnVzdGlmeQxDYXB0aW9uLlRleHQGC1ByaWNlIFRvdGFsFURhdGFCaW5kaW5nLlZhbHVlVHlwZQYFRmxvYXQOT3B0aW9ucy5Gb290ZXIJBVdpZHRoAmQRUG9zaXRpb24uQ29sSW5kZXgCBxFQb3NpdGlvbi5Sb3dJbmRleAIAElBvc2l0aW9uLkJhbmRJbmRleAIAFFN1bW1hcnlGb290ZXIuRm9ybWF0Bg1bIUNVXSMsIyMwLjAwElN1bW1hcnlGb290ZXIuS2luZAcFc2tTdW0JU2hvd1VuaXRzCA1Jc1VuaXRzQ29sdW1uCAAAVFBGMB1UcHNjeEVzdGltYXRpbmdUcmVlTGlzdENvbHVtbg5HcmlkVW50c0NvbHVtbgxDYXB0aW9uLlRleHQGBVVuaXRzFURhdGFCaW5kaW5nLlZhbHVlVHlwZQYGU3RyaW5nD09wdGlvbnMuRWRpdGluZwgFV2lkdGgCMRFQb3NpdGlvbi5Db2xJbmRleAIDEVBvc2l0aW9uLlJvd0luZGV4AgASUG9zaXRpb24uQmFuZEluZGV4AgAJU2hvd1VuaXRzCA1Jc1VuaXRzQ29sdW1uCQ1Vbml0Rm9yQ29sdW1uBgNRdHkAAFRQRjAdVHBzY3hFc3RpbWF0aW5nVHJlZUxpc3RDb2x1bW4PVHJlZUxpc3RDb2x1bW4zE1Byb3BlcnRpZXNDbGFzc05hbWUGElRjeExhYmVsUHJvcGVydGllcxlQcm9wZXJ0aWVzLkFsaWdubWVudC5Ib3J6Bw50YVJpZ2h0SnVzdGlmeQxDYXB0aW9uLlRleHQGCUNvc3QgRWFjaBVEYXRhQmluZGluZy5WYWx1ZVR5cGUGBUZsb2F0Dk9wdGlvbnMuRm9vdGVyCQVXaWR0aAJkEVBvc2l0aW9uLkNvbEluZGV4AgQRUG9zaXRpb24uUm93SW5kZXgCABJQb3NpdGlvbi5CYW5kSW5kZXgCABRTdW1tYXJ5Rm9vdGVyLkZvcm1hdAYNWyFDVV0jLCMjMC4wMBJTdW1tYXJ5Rm9vdGVyLktpbmQHBXNrU3VtCVNob3dVbml0cwgNSXNVbml0c0NvbHVtbggAAFRQRjAdVHBzY3hFc3RpbWF0aW5nVHJlZUxpc3RDb2x1bW4PVHJlZUxpc3RDb2x1bW42E1Byb3BlcnRpZXNDbGFzc05hbWUGElRjeExhYmVsUHJvcGVydGllcxlQcm9wZXJ0aWVzLkFsaWdubWVudC5Ib3J6Bw50YVJpZ2h0SnVzdGlmeQxDYXB0aW9uLlRleHQGCE1hcmt1cCAlFURhdGFCaW5kaW5nLlZhbHVlVHlwZQYFRmxvYXQOT3B0aW9ucy5Gb290ZXIJBVdpZHRoAkMRUG9zaXRpb24uQ29sSW5kZXgCBRFQb3NpdGlvbi5Sb3dJbmRleAIAElBvc2l0aW9uLkJhbmRJbmRleAIAElN1bW1hcnlGb290ZXIuS2luZAcFc2tTdW0JU2hvd1VuaXRzCA1Jc1VuaXRzQ29sdW1uCAAA"/>

  </Properties>
</Item>
这就是Decompress()函数的样子:

var dataStream = 
(
    from XmlNode xn in nList
    where xn?.Attributes != null 
    && xn?.Attributes["Name"].InnerText == "Columns"
    select xn.Attributes["StreamData"].InnerText
).ToList()[0x0];
if (string.IsNullOrEmpty(dataStream) { return; }
var byteStream = Encoding.UTF8.GetBytes(dataStream);
var memStream = new MemoryStream
(
    byteStream,
    0,
    byteStream.Length,
    true,
    true
);
var rslt = Decompress(stream);
public static string Decompress(MemoryStream stream)
{
    using (var uncompressed = new MemoryStream())
    using (var compressed = stream)
    using (var ds = new DeflatedStream(compressed, CompressionMode.Decompress))
    {
        ds.CopyTo(uncompressed);
        return Encoding.UTF8.GetString(uncompressed.ToArray());
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<Item Class="Item" Name="Default" GUID="{BC0EE2E4-641F-44DA-A989-F97C58B1828D}">
  <Properties>
    <Property Class="Type" GUID="{3A6C51FB-BE2E-4DBF-B2C5-8EB7C3508529}" Name="Type" group="Item" OrderIndex="0" DecimalPlaces="2">blah</Property>
    <Property Class="Text" GUID="{1119FF79-74C6-42AF-918F-1AF485614D07}" Name="Name" inheritaction="Ignore" required="True" group="Item" OrderIndex="1" DecimalPlaces="2">blahblah</Property>
    <Property Class="Number" GUID="{AF1BC5FD-A4DD-4610-92EE-2F7D7EA4FA64}" Name="OrderIndex" systemhidden="True" OrderIndex="3" DecimalPlaces="2">0</Property>
    <Property Class="Text" GUID="{176382CA-7E00-47C2-8DD3-82A9ED4FB973}" Name="GUID" inheritaction="Ignore" systemlocked="True" systemhidden="True" OrderIndex="4" DecimalPlaces="2">{BC0EE2E4-641F-44DA-A989-F97C58B1828D}</Property>
    <Property Class="Stream" GUID="{833CB9FD-4914-4899-B757-CC9C130E6914}" Name="Columns" OrderIndex="5" DecimalPlaces="2" StreamData="VFBGMB1UcHNjeEVzdGltYXRpbmdUcmVlTGlzdENvbHVtbgZDb2x1bW4MQ2FwdGlvbi5UZXh0BgROYW1lFURhdGFCaW5kaW5nLlZhbHVlVHlwZQYGU3RyaW5nBVdpZHRoAzgBEVBvc2l0aW9uLkNvbEluZGV4AgARUG9zaXRpb24uUm93SW5kZXgCABJQb3NpdGlvbi5CYW5kSW5kZXgCAAlTaG93VW5pdHMIDUlzVW5pdHNDb2x1bW4IAABUUEYwHVRwc2N4RXN0aW1hdGluZ1RyZWVMaXN0Q29sdW1uB0NvbHVtbjIMQ2FwdGlvbi5UZXh0BgtEZXNjcmlwdGlvbhVEYXRhQmluZGluZy5WYWx1ZVR5cGUGBlN0cmluZwVXaWR0aAJsEVBvc2l0aW9uLkNvbEluZGV4AgERUG9zaXRpb24uUm93SW5kZXgCABJQb3NpdGlvbi5CYW5kSW5kZXgCAAlTaG93VW5pdHMIDUlzVW5pdHNDb2x1bW4IAABUUEYwHVRwc2N4RXN0aW1hdGluZ1RyZWVMaXN0Q29sdW1uD1RyZWVMaXN0Q29sdW1uMhNQcm9wZXJ0aWVzQ2xhc3NOYW1lBhJUY3hMYWJlbFByb3BlcnRpZXMZUHJvcGVydGllcy5BbGlnbm1lbnQuSG9yegcNdGFMZWZ0SnVzdGlmeQxDYXB0aW9uLlRleHQGBUNvbG9yFURhdGFCaW5kaW5nLlZhbHVlVHlwZQYGU3RyaW5nBVdpZHRoAiwRUG9zaXRpb24uQ29sSW5kZXgCCBFQb3NpdGlvbi5Sb3dJbmRleAIAElBvc2l0aW9uLkJhbmRJbmRleAIACVNob3dVbml0cwgNSXNVbml0c0NvbHVtbggAAFRQRjAdVHBzY3hFc3RpbWF0aW5nVHJlZUxpc3RDb2x1bW4OVHJlZUxpc3RDb2x1bW4TUHJvcGVydGllc0NsYXNzTmFtZQYSVGN4TGFiZWxQcm9wZXJ0aWVzGVByb3BlcnRpZXMuQWxpZ25tZW50LkhvcnoHDnRhUmlnaHRKdXN0aWZ5DENhcHRpb24uVGV4dAYDUXR5FURhdGFCaW5kaW5nLlZhbHVlVHlwZQYFRmxvYXQOT3B0aW9ucy5Gb290ZXIJBVdpZHRoAmQRUG9zaXRpb24uQ29sSW5kZXgCAhFQb3NpdGlvbi5Sb3dJbmRleAIAElBvc2l0aW9uLkJhbmRJbmRleAIAElN1bW1hcnlGb290ZXIuS2luZAcFc2tTdW0JU2hvd1VuaXRzCQ1Jc1VuaXRzQ29sdW1uCAAAVFBGMB1UcHNjeEVzdGltYXRpbmdUcmVlTGlzdENvbHVtbg9UcmVlTGlzdENvbHVtbjQTUHJvcGVydGllc0NsYXNzTmFtZQYSVGN4TGFiZWxQcm9wZXJ0aWVzGVByb3BlcnRpZXMuQWxpZ25tZW50LkhvcnoHDnRhUmlnaHRKdXN0aWZ5DENhcHRpb24uVGV4dAYKUHJpY2UgRWFjaBVEYXRhQmluZGluZy5WYWx1ZVR5cGUGBUZsb2F0Dk9wdGlvbnMuRm9vdGVyCQVXaWR0aAJkEVBvc2l0aW9uLkNvbEluZGV4AgYRUG9zaXRpb24uUm93SW5kZXgCABJQb3NpdGlvbi5CYW5kSW5kZXgCABJTdW1tYXJ5Rm9vdGVyLktpbmQHBXNrU3VtCVNob3dVbml0cwgNSXNVbml0c0NvbHVtbggAAFRQRjAdVHBzY3hFc3RpbWF0aW5nVHJlZUxpc3RDb2x1bW4PVHJlZUxpc3RDb2x1bW41E1Byb3BlcnRpZXNDbGFzc05hbWUGElRjeExhYmVsUHJvcGVydGllcxlQcm9wZXJ0aWVzLkFsaWdubWVudC5Ib3J6Bw50YVJpZ2h0SnVzdGlmeQxDYXB0aW9uLlRleHQGC1ByaWNlIFRvdGFsFURhdGFCaW5kaW5nLlZhbHVlVHlwZQYFRmxvYXQOT3B0aW9ucy5Gb290ZXIJBVdpZHRoAmQRUG9zaXRpb24uQ29sSW5kZXgCBxFQb3NpdGlvbi5Sb3dJbmRleAIAElBvc2l0aW9uLkJhbmRJbmRleAIAFFN1bW1hcnlGb290ZXIuRm9ybWF0Bg1bIUNVXSMsIyMwLjAwElN1bW1hcnlGb290ZXIuS2luZAcFc2tTdW0JU2hvd1VuaXRzCA1Jc1VuaXRzQ29sdW1uCAAAVFBGMB1UcHNjeEVzdGltYXRpbmdUcmVlTGlzdENvbHVtbg5HcmlkVW50c0NvbHVtbgxDYXB0aW9uLlRleHQGBVVuaXRzFURhdGFCaW5kaW5nLlZhbHVlVHlwZQYGU3RyaW5nD09wdGlvbnMuRWRpdGluZwgFV2lkdGgCMRFQb3NpdGlvbi5Db2xJbmRleAIDEVBvc2l0aW9uLlJvd0luZGV4AgASUG9zaXRpb24uQmFuZEluZGV4AgAJU2hvd1VuaXRzCA1Jc1VuaXRzQ29sdW1uCQ1Vbml0Rm9yQ29sdW1uBgNRdHkAAFRQRjAdVHBzY3hFc3RpbWF0aW5nVHJlZUxpc3RDb2x1bW4PVHJlZUxpc3RDb2x1bW4zE1Byb3BlcnRpZXNDbGFzc05hbWUGElRjeExhYmVsUHJvcGVydGllcxlQcm9wZXJ0aWVzLkFsaWdubWVudC5Ib3J6Bw50YVJpZ2h0SnVzdGlmeQxDYXB0aW9uLlRleHQGCUNvc3QgRWFjaBVEYXRhQmluZGluZy5WYWx1ZVR5cGUGBUZsb2F0Dk9wdGlvbnMuRm9vdGVyCQVXaWR0aAJkEVBvc2l0aW9uLkNvbEluZGV4AgQRUG9zaXRpb24uUm93SW5kZXgCABJQb3NpdGlvbi5CYW5kSW5kZXgCABRTdW1tYXJ5Rm9vdGVyLkZvcm1hdAYNWyFDVV0jLCMjMC4wMBJTdW1tYXJ5Rm9vdGVyLktpbmQHBXNrU3VtCVNob3dVbml0cwgNSXNVbml0c0NvbHVtbggAAFRQRjAdVHBzY3hFc3RpbWF0aW5nVHJlZUxpc3RDb2x1bW4PVHJlZUxpc3RDb2x1bW42E1Byb3BlcnRpZXNDbGFzc05hbWUGElRjeExhYmVsUHJvcGVydGllcxlQcm9wZXJ0aWVzLkFsaWdubWVudC5Ib3J6Bw50YVJpZ2h0SnVzdGlmeQxDYXB0aW9uLlRleHQGCE1hcmt1cCAlFURhdGFCaW5kaW5nLlZhbHVlVHlwZQYFRmxvYXQOT3B0aW9ucy5Gb290ZXIJBVdpZHRoAkMRUG9zaXRpb24uQ29sSW5kZXgCBRFQb3NpdGlvbi5Sb3dJbmRleAIAElBvc2l0aW9uLkJhbmRJbmRleAIAElN1bW1hcnlGb290ZXIuS2luZAcFc2tTdW0JU2hvd1VuaXRzCA1Jc1VuaXRzQ29sdW1uCAAA"/>

  </Properties>
</Item>
XML文件看起来与此类似,但不完全相同(我保证它是有效的XML):

var dataStream = 
(
    from XmlNode xn in nList
    where xn?.Attributes != null 
    && xn?.Attributes["Name"].InnerText == "Columns"
    select xn.Attributes["StreamData"].InnerText
).ToList()[0x0];
if (string.IsNullOrEmpty(dataStream) { return; }
var byteStream = Encoding.UTF8.GetBytes(dataStream);
var memStream = new MemoryStream
(
    byteStream,
    0,
    byteStream.Length,
    true,
    true
);
var rslt = Decompress(stream);
public static string Decompress(MemoryStream stream)
{
    using (var uncompressed = new MemoryStream())
    using (var compressed = stream)
    using (var ds = new DeflatedStream(compressed, CompressionMode.Decompress))
    {
        ds.CopyTo(uncompressed);
        return Encoding.UTF8.GetString(uncompressed.ToArray());
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<Item Class="Item" Name="Default" GUID="{BC0EE2E4-641F-44DA-A989-F97C58B1828D}">
  <Properties>
    <Property Class="Type" GUID="{3A6C51FB-BE2E-4DBF-B2C5-8EB7C3508529}" Name="Type" group="Item" OrderIndex="0" DecimalPlaces="2">blah</Property>
    <Property Class="Text" GUID="{1119FF79-74C6-42AF-918F-1AF485614D07}" Name="Name" inheritaction="Ignore" required="True" group="Item" OrderIndex="1" DecimalPlaces="2">blahblah</Property>
    <Property Class="Number" GUID="{AF1BC5FD-A4DD-4610-92EE-2F7D7EA4FA64}" Name="OrderIndex" systemhidden="True" OrderIndex="3" DecimalPlaces="2">0</Property>
    <Property Class="Text" GUID="{176382CA-7E00-47C2-8DD3-82A9ED4FB973}" Name="GUID" inheritaction="Ignore" systemlocked="True" systemhidden="True" OrderIndex="4" DecimalPlaces="2">{BC0EE2E4-641F-44DA-A989-F97C58B1828D}</Property>
    <Property Class="Stream" GUID="{833CB9FD-4914-4899-B757-CC9C130E6914}" Name="Columns" OrderIndex="5" DecimalPlaces="2" StreamData="VFBGMB1UcHNjeEVzdGltYXRpbmdUcmVlTGlzdENvbHVtbgZDb2x1bW4MQ2FwdGlvbi5UZXh0BgROYW1lFURhdGFCaW5kaW5nLlZhbHVlVHlwZQYGU3RyaW5nBVdpZHRoAzgBEVBvc2l0aW9uLkNvbEluZGV4AgARUG9zaXRpb24uUm93SW5kZXgCABJQb3NpdGlvbi5CYW5kSW5kZXgCAAlTaG93VW5pdHMIDUlzVW5pdHNDb2x1bW4IAABUUEYwHVRwc2N4RXN0aW1hdGluZ1RyZWVMaXN0Q29sdW1uB0NvbHVtbjIMQ2FwdGlvbi5UZXh0BgtEZXNjcmlwdGlvbhVEYXRhQmluZGluZy5WYWx1ZVR5cGUGBlN0cmluZwVXaWR0aAJsEVBvc2l0aW9uLkNvbEluZGV4AgERUG9zaXRpb24uUm93SW5kZXgCABJQb3NpdGlvbi5CYW5kSW5kZXgCAAlTaG93VW5pdHMIDUlzVW5pdHNDb2x1bW4IAABUUEYwHVRwc2N4RXN0aW1hdGluZ1RyZWVMaXN0Q29sdW1uD1RyZWVMaXN0Q29sdW1uMhNQcm9wZXJ0aWVzQ2xhc3NOYW1lBhJUY3hMYWJlbFByb3BlcnRpZXMZUHJvcGVydGllcy5BbGlnbm1lbnQuSG9yegcNdGFMZWZ0SnVzdGlmeQxDYXB0aW9uLlRleHQGBUNvbG9yFURhdGFCaW5kaW5nLlZhbHVlVHlwZQYGU3RyaW5nBVdpZHRoAiwRUG9zaXRpb24uQ29sSW5kZXgCCBFQb3NpdGlvbi5Sb3dJbmRleAIAElBvc2l0aW9uLkJhbmRJbmRleAIACVNob3dVbml0cwgNSXNVbml0c0NvbHVtbggAAFRQRjAdVHBzY3hFc3RpbWF0aW5nVHJlZUxpc3RDb2x1bW4OVHJlZUxpc3RDb2x1bW4TUHJvcGVydGllc0NsYXNzTmFtZQYSVGN4TGFiZWxQcm9wZXJ0aWVzGVByb3BlcnRpZXMuQWxpZ25tZW50LkhvcnoHDnRhUmlnaHRKdXN0aWZ5DENhcHRpb24uVGV4dAYDUXR5FURhdGFCaW5kaW5nLlZhbHVlVHlwZQYFRmxvYXQOT3B0aW9ucy5Gb290ZXIJBVdpZHRoAmQRUG9zaXRpb24uQ29sSW5kZXgCAhFQb3NpdGlvbi5Sb3dJbmRleAIAElBvc2l0aW9uLkJhbmRJbmRleAIAElN1bW1hcnlGb290ZXIuS2luZAcFc2tTdW0JU2hvd1VuaXRzCQ1Jc1VuaXRzQ29sdW1uCAAAVFBGMB1UcHNjeEVzdGltYXRpbmdUcmVlTGlzdENvbHVtbg9UcmVlTGlzdENvbHVtbjQTUHJvcGVydGllc0NsYXNzTmFtZQYSVGN4TGFiZWxQcm9wZXJ0aWVzGVByb3BlcnRpZXMuQWxpZ25tZW50LkhvcnoHDnRhUmlnaHRKdXN0aWZ5DENhcHRpb24uVGV4dAYKUHJpY2UgRWFjaBVEYXRhQmluZGluZy5WYWx1ZVR5cGUGBUZsb2F0Dk9wdGlvbnMuRm9vdGVyCQVXaWR0aAJkEVBvc2l0aW9uLkNvbEluZGV4AgYRUG9zaXRpb24uUm93SW5kZXgCABJQb3NpdGlvbi5CYW5kSW5kZXgCABJTdW1tYXJ5Rm9vdGVyLktpbmQHBXNrU3VtCVNob3dVbml0cwgNSXNVbml0c0NvbHVtbggAAFRQRjAdVHBzY3hFc3RpbWF0aW5nVHJlZUxpc3RDb2x1bW4PVHJlZUxpc3RDb2x1bW41E1Byb3BlcnRpZXNDbGFzc05hbWUGElRjeExhYmVsUHJvcGVydGllcxlQcm9wZXJ0aWVzLkFsaWdubWVudC5Ib3J6Bw50YVJpZ2h0SnVzdGlmeQxDYXB0aW9uLlRleHQGC1ByaWNlIFRvdGFsFURhdGFCaW5kaW5nLlZhbHVlVHlwZQYFRmxvYXQOT3B0aW9ucy5Gb290ZXIJBVdpZHRoAmQRUG9zaXRpb24uQ29sSW5kZXgCBxFQb3NpdGlvbi5Sb3dJbmRleAIAElBvc2l0aW9uLkJhbmRJbmRleAIAFFN1bW1hcnlGb290ZXIuRm9ybWF0Bg1bIUNVXSMsIyMwLjAwElN1bW1hcnlGb290ZXIuS2luZAcFc2tTdW0JU2hvd1VuaXRzCA1Jc1VuaXRzQ29sdW1uCAAAVFBGMB1UcHNjeEVzdGltYXRpbmdUcmVlTGlzdENvbHVtbg5HcmlkVW50c0NvbHVtbgxDYXB0aW9uLlRleHQGBVVuaXRzFURhdGFCaW5kaW5nLlZhbHVlVHlwZQYGU3RyaW5nD09wdGlvbnMuRWRpdGluZwgFV2lkdGgCMRFQb3NpdGlvbi5Db2xJbmRleAIDEVBvc2l0aW9uLlJvd0luZGV4AgASUG9zaXRpb24uQmFuZEluZGV4AgAJU2hvd1VuaXRzCA1Jc1VuaXRzQ29sdW1uCQ1Vbml0Rm9yQ29sdW1uBgNRdHkAAFRQRjAdVHBzY3hFc3RpbWF0aW5nVHJlZUxpc3RDb2x1bW4PVHJlZUxpc3RDb2x1bW4zE1Byb3BlcnRpZXNDbGFzc05hbWUGElRjeExhYmVsUHJvcGVydGllcxlQcm9wZXJ0aWVzLkFsaWdubWVudC5Ib3J6Bw50YVJpZ2h0SnVzdGlmeQxDYXB0aW9uLlRleHQGCUNvc3QgRWFjaBVEYXRhQmluZGluZy5WYWx1ZVR5cGUGBUZsb2F0Dk9wdGlvbnMuRm9vdGVyCQVXaWR0aAJkEVBvc2l0aW9uLkNvbEluZGV4AgQRUG9zaXRpb24uUm93SW5kZXgCABJQb3NpdGlvbi5CYW5kSW5kZXgCABRTdW1tYXJ5Rm9vdGVyLkZvcm1hdAYNWyFDVV0jLCMjMC4wMBJTdW1tYXJ5Rm9vdGVyLktpbmQHBXNrU3VtCVNob3dVbml0cwgNSXNVbml0c0NvbHVtbggAAFRQRjAdVHBzY3hFc3RpbWF0aW5nVHJlZUxpc3RDb2x1bW4PVHJlZUxpc3RDb2x1bW42E1Byb3BlcnRpZXNDbGFzc05hbWUGElRjeExhYmVsUHJvcGVydGllcxlQcm9wZXJ0aWVzLkFsaWdubWVudC5Ib3J6Bw50YVJpZ2h0SnVzdGlmeQxDYXB0aW9uLlRleHQGCE1hcmt1cCAlFURhdGFCaW5kaW5nLlZhbHVlVHlwZQYFRmxvYXQOT3B0aW9ucy5Gb290ZXIJBVdpZHRoAkMRUG9zaXRpb24uQ29sSW5kZXgCBRFQb3NpdGlvbi5Sb3dJbmRleAIAElBvc2l0aW9uLkJhbmRJbmRleAIAElN1bW1hcnlGb290ZXIuS2luZAcFc2tTdW0JU2hvd1VuaXRzCA1Jc1VuaXRzQ29sdW1uCAAA"/>

  </Properties>
</Item>

废话
布拉布拉赫
0
{BC0EE2E4-641F-44DA-A989-F97C58B1828D}

由于XML是字符串,解压几乎肯定需要二进制数据作为输入,因此
StreamData
属性的值必须是二进制数据的ASCII/字符串编码表示形式。这可以使用简单的bin-2-hex表示法,但从问题中提供的示例来看,它更可能是base64或类似的表示法

提供XML的任何人都应该能够为您确认编码

在任何情况下,我们都可以相当肯定
StreamData
必须采用字符串编码形式,因为否则二进制数据将包含会导致无效XML文件的值(例如值为0的字节等)

在这种情况下,您的问题是
Encoding.UTF8.GetBytes()
将传递的数据简单地解释为字节数组。也就是说,它希望给定的字节是有效UTF8编码字符串的一部分。它不进行从十六进制字符到二进制字节等的任何转换

也就是说,使用一个非常简单的示例,如果您的
StreamData
是一个值为
“000102”
的字符串,那么您的代码当前将生成一个
byteStream
,其内容由6(六)个字节组成,值如下:

StreamData :  '0' '0' '0' '1' '0' '2'
bytes      : [30][30][30][31][30][32]    (hexadecimal byte values)
StreamData : '00''01''02'
bytes      : [00][01][02]                (hexadecimal byte values)
当您可能期望的是一个3(三)字节的流,其值对应于
StreamData
,如下所示:

StreamData :  '0' '0' '0' '1' '0' '2'
bytes      : [30][30][30][31][30][32]    (hexadecimal byte values)
StreamData : '00''01''02'
bytes      : [00][01][02]                (hexadecimal byte values)
i、 e.在将
StreamData
字符串传递到Decompress()例程之前,您需要将其正确解码为内存中的二进制表示形式,该例程当前正在抱怨,因为它提供的二进制数据不是有效的压缩数据


您需要在
StreamData
中确认二进制数据的编码,并应用适当的解码以获得该数据的二进制表示形式,然后再将其传递到Decompress()例程,而不是原始/原始字符串表示形式。

没有看到创建文件的代码,或者是一个示例文件,我们必须猜测您实际做了什么。我用xmlI更新了它。我有一种感觉,这将归结为zlib头不兼容的问题。解码base64并检查标头。获取Delphi代码会有帮助!不幸的是,我没有访问Delphi代码的权限。我确实为zlib.net添加了一个nuget,但没有使用它,对此我有点困惑。我唯一能确定的是,无论是谁压缩它,都会通过Delphi/Pascal使用Stream.WriteComponent。谢谢-我将尝试您推荐的方法。这里是streamdata属性的一个相当大的部分:streamdata="Bhl0BevzdGltyxRPBMCudGxPxPxBwf0Aw5NbGtuy3HucMvLtGlzDaizBagUy3HucMvLtGlzDjHbMrZagacQyFqmFuzDag1RjFryzWvTxBxBw9Aw9Aw9UgGaUgGaUgGaUgAw9UgGaUgGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbG29SSW5KZXGCBGIABGHGHSB3DJBMRLEAGAGAGUCUJHMI将流数据属性放在我的示例中,如果该帮助在我看来像base64。提供XML文件的人应该能够为您确认。:)嘿,我终于让它像你推荐的那样工作了,但现在我不知道该怎么处理它返回的内容:“tpf0tpscxestimatingtreelistcolumnscaption.TextNameDataBinding.ValueTypeStringWidth8Position.ColIndex”它只是一个乱码字符串。。。