先解压再解析XML。C#用GZipStream解压字节流并转字符串,Java用GZIPInputStream或InflaterInputStream读取压缩数据,结合StreamReader或BufferedReader还原为明文XML后,交由XDocument或DocumentBuilder解析;需注意压缩前是否Base64编码及字节序、魔数识别(如1F8B标识GZip)。

在处理XML数据时,有时会遇到经过压缩的XML字符串(如使用GZip或Deflate压缩)。要解析这类内容,必须先解压再进行XML解析。以下是常见的解压XML字符串的方法,适用于C#、Java等主流语言。
如果XML字符串是通过GZip压缩的,可以使用 red">GZipStream 进行解压:
示例代码:
using System.IO;
using System.IO.Compression;
using System.Text;
using System.Xml.Linq;
<p>public static string DecompressGZipXml(byte[] compressedData)
{
using (var memoryStream = new MemoryStream(compressedData))
using (var gzipStream = new GZipStream(memoryStream, CompressionMode.Decompress))
using (var streamReader = new StreamReader(gzipStream, Encoding.UTF8))
{
return streamReader.ReadToEnd();
}
}</p><p>// 使用
string xmlContent = DecompressGZipXml(compressedBytes);
XDocument doc = XDocument.Parse(xmlContent);
Java 提供了 java.util.zip 包来处理压缩数据。根据压缩方式选择 InflaterInputStream(Deflate)或 GZIPInputStream。
示例:解压 GZip 压缩的XML
import java.io.*;
import java.util.zip.GZIPInputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
<p>public static String decompressGZipXml(byte[] compressedData) throws IOException {
ByteArrayInputStream bais = new ByteArrayInputStream(compressedData);
GZIPInputStream gis = new GZIPInputStream(bais);
BufferedReader reader = new BufferedReader(new InputStreamReader(gis, "UTF-8"));
StringBuilder outStr = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
outStr.append(line);
}
return outStr.toString();
}</p><p>// 解析XML
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(xmlString)));
实际应用中,需确认XML字符串是否真的被压缩,以及使用的压缩算法:
Base64 + GZip 示例(C#):
byte[] compressedBytes = Convert.FromBase64String(base64String); string xml = DecompressGZipXml(compressedBytes);
基本上就这些。关键是先还原原始XML字符串,再交给标准解析器处理。
以上就是XML中如何解压XML字符串_XML解压XML字符串的操作方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号