如何将XmlDocument对象作为URI传入仅接受URI的构造方法?
不保存本地文件,将XmlDocument转为可用于Uri的数据源
你可以通过Data URI方案直接将XmlDocument的内容转换为Uri,无需保存到本地文件,具体实现步骤如下:
方法一:Base64编码(推荐用于较长XML内容)
// 1. 将XmlDocument转为XML字符串 string xmlContent = xmlDocument.OuterXml; // 2. 将XML字符串编码为Base64 byte[] xmlBytes = Encoding.UTF8.GetBytes(xmlContent); string base64Xml = Convert.ToBase64String(xmlBytes); // 3. 构造Data URI并赋值 MapShapeReader.Source = new Uri($"data:text/xml;base64,{base64Xml}");
方法二:直接URI编码(适合短XML内容)
// 1. 将XmlDocument转为XML字符串 string xmlContent = xmlDocument.OuterXml; // 2. 对XML字符串进行URI转义 string encodedXml = Uri.EscapeDataString(xmlContent); // 3. 构造Data URI并赋值 MapShapeReader.Source = new Uri($"data:text/xml;charset=utf-8,{encodedXml}");
说明
- Data URI允许直接将数据嵌入到Uri中,无需依赖外部文件
- Base64编码方式可以避免XML特殊字符的转义问题,更稳定
- 两种方式都不需要将XML保存到本地磁盘,直接在内存中完成转换
内容的提问来源于stack exchange,提问作者OrLevi
相关产品推荐
相关产品推荐

