Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 生成XML文件的二进制内容_C# - Fatal编程技术网

C# 生成XML文件的二进制内容

C# 生成XML文件的二进制内容,c#,C#,我在SQLServer2008中名为File的表中有一个名为contents的列。content列的数据类型是varbinary(MAX)。我有一个XML文件,需要使用c#.net 3.5以二进制格式生成其内容 文件名为Test.XML,我需要在名为Test.txt的文件中生成其内容。然后我可以编写一个更新脚本来设置其内容。打开文件,转换为字节数组,然后将字节数组粘贴到数据库中的varbinary字段中: string xml = File.ReadAllText("text.xml"); by

我在SQLServer2008中名为
File
的表中有一个名为
contents
的列。
content
列的数据类型是
varbinary(MAX)
。我有一个XML文件,需要使用c#.net 3.5以二进制格式生成其内容


文件名为
Test.XML
,我需要在名为
Test.txt
的文件中生成其内容。然后我可以编写一个更新脚本来设置其内容。

打开文件,转换为字节数组,然后将字节数组粘贴到数据库中的varbinary字段中:

string xml = File.ReadAllText("text.xml");
byte[] bytes = Encoding.ASCII.GetBytes(xml);

// put bytes into db
更新:

如果您真的希望它作为0和1的字符串表示形式—在我看来这是毫无意义的,您只需迭代字节数组,将每个字节转换为以2为基数的二进制,并将所述值添加到字符串生成器对象,如下所示:

string xml = File.ReadAllText("text.xml");
byte[] bytes = Encoding.ASCII.GetBytes(xml);
StringBuilder sb = new StringBuilder();

foreach (byte b in bytes)
{
    sb.Append(Convert.ToString(b, 2));
}

File.WriteAllText("test2.txt", sb.ToString());
我不想让任何人因为这个看似愚蠢的答案而投票否决我——看看下面的评论——这就是他说的他想要的

更新:

要将字节数组转换为十六进制,请执行以下操作:

string xml = File.ReadAllText("text.xml");
byte[] bytes = Encoding.ASCII.GetBytes(xml);
StringBuilder sb = new StringBuilder();

foreach (byte b in bytes)
{
      sb.AppendFormat("{0:x2}", b);
}

File.WriteAllText("test2.txt", sb.ToString());

“以二进制形式生成内容”是什么意思???你想在这里做什么??一点也不清楚。。。。。要存储XML文件,请使用
XML
datatype-not varbinary。。。。您的专栏名是
content
还是
contents
…好吧,假设我们有一个XML,我使用File.ReadAllText方法读取文本中的所有内容。然后我想使用BinaryWriter将内容写入另一个文件中。我希望我已经讲清楚了。对不起,上次我没说清楚。是的,我也有点迷路了。您需要将xml文件保存到数据库中的“内容”字段中吗?为什么坚持将xml转换为二进制文件???一点道理也没有。。。。。XML只是一个字符串——只要将它存储到
XML
类型的列中,然后处理它……我同意,当我们有一个XML类型的列时,它没有意义。但我所描述的是我需要完成的。如果你们能提出建议,我们将不胜感激!好的,但我需要将这些字节写入一个文件,并复制和更新sql脚本。我尝试过这样做:string xmlData=File.ReadAllText(inputFilePath);byte[]bytes=Encoding.ASCII.GetBytes(xmlData);FileStream fs=新文件流(outputFilePath,FileMode.OpenOrCreate);BinaryWriter sw=新的BinaryWriter(fs);sw.Write(字节);sw.Close();inary输出文件以XML形式向我显示相同的内容。我们不应该看到没有任何意义的模糊数字吗?下面是他们如何从数据库字符串filecontentsdeconded=unicodeincoding.Unicode.GetString(specsXML)中提取二进制内容;我并不真正理解为什么需要这样做——为什么需要将xml存储为1和0?这没有任何意义。即使xml文件实际上是二进制的,就像计算机上的每个文件一样,您所说的不是转换为二进制,而是获取二进制的字符串表示形式,其中每个字节都有代表性的ASCII字符1和0…这就是您想要做的吗?您将得到一个比原始xml文件大得多的文件。@user424294您知道sql中的varbinary(max)不需要字符串“101010”-它只接受一个字节数组(来自.Net世界)并存储它。同样,如果您需要将其转换为动态SQL语句的二进制文本,则需要十六进制编码
0x4E9ABC2…
@dormisher-更新您的答案,以显示如何将二进制数组转换为十六进制字符串,并且您从我这里得到了+1。