关于xml:在C#中从Base64解码

Decoding from Base64 in C#

我创建了XML文档并将此文档另存为

1
2
3
4
5
6
7
  XmlDocument xmlDoc = new XmlDocument();
  XmlDeclaration dec = xmlDoc.CreateXmlDeclaration("1.0","UTF-8", null);
  xmlDoc.AppendChild(dec);
  XmlTextWriter writer = new XmlTextWriter(fullPath,Encoding.UTF8);
  writer.Formatting = Formatting.Indented;
  xMLDoc.Save(writer);
  writer.Flush();

然后我用base64编码器对这个文档进行了编码

解码器无法分析XML文件。我自己创建了解码器,得到了这个结果

1
2
3
4
5
6
7
8
9
 ?<?xml version="1.0" encoding="utf-8"?>

<ClinicalDocument
 xmlns="urn:hl7-org:v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
classCode="DOCCLIN" moodCode="EVN" schemaLocation="urn:hl7-org:v3
CDA.xsd"
>

  <typeId extension="POCD_HD000040" root="2.16.840.1.113883.1.3
"
/>

请帮我解决这个问题。如何保存XML文件以避免出现问题?或者我如何编码到base 64来解决这个问题?我使用base64编码器对XML文件进行编码。我正在申请文件。需要使用base64编码器。我破译了密码,检查问题出在哪里。解码器是JAVA。他们不能解析我相信的XML文件,因为?<在文档前面。


这取决于您如何对其进行编码,但是您应该使用UTF-8,因为文档是声明为这样的。以下是编码和解码的示例:

参见乔恩·斯基特的回答:
C base64带对象序列化的编码/解码问题

编码:

1
2
3
4
public string EncodeStringToBase64(string stringToEncode)
{
    return Convert.ToBase64String(Encoding.UTF8.GetBytes(stringToEncode));
}

译码:

1
2
3
4
public string DecodeStringFromBase64(string stringToDecode)
{      
    return Encoding.UTF8.GetString(Convert.FromBase64String(stringToDecode));
}


另一个选项-可以是新的xmltextwriter(fullpath,encoding.utf8)创建的默认utf-8流中的BOM;

考虑对不向流中插入BOM的utf8-http://msdn.microsoft.com/en-us/library/S064F8W2.aspx使用第二个构造函数。