如何解码CDATA的内容 [英] How to decode the contents of CDATA
本文介绍了如何解码CDATA的内容的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
此方法为我提供了xml文件中CDATA部分的内容。但我想解码这个CDATA.CDATA的内容是0和1的组合。但是编码所以我得到ABC12KJ等不同字母的组合......
如何获得解码数据。 ?
谢谢..
这里是样本文件
This method is giving me the contents of CDATA section in an xml file. But I want to decode this CDATA.Content of CDATA is the combination of 0s and 1s. But the are encoded so I am getting combination of different alphabets like ABC12KJ etc...
How can I get the decoded data. ?
Thanks..
here is the sample file
<?xml version="1.0" encoding="UTF-8"?>
<TesterLog Version="1">
<TestProperties>
<Item name="IUT Name" value="Reference"/>
</TestProperties>
<SignalData SamplingPeriod="1000.000 ns" DataWidth="16 bit">
<Signal>
<Id>IUT_RX</Id>
<InitState>1</InitState>
<![CDATA[HQFPAVkBiwGVAZ8BqQHHAdEBAwINAjUCPwJxAnsCrQK3AsEC1QLzAv0CEQMbAzkDTQNrA3UDfwOJA7sDxQPtA/cDKQQzBEcEUQSDBI0EtQTJBN0E5wTxBAUFDwUZBS0FNwVBBUsFVQWHFZEVmxWlFa8VuRXDFc0V1xXhFesV9RX/FTEWOxZFFk8WgRaLFpUWnxapFscW0RbbFuUW7xYDFyEXPxdJF1MXGhgkGC4YTBhWGHQYfhiwGLoY2BjiGBQZHhkoGTIZUBlaGXgZghmgGaoZvhnbGeUZ9RwTHR0dTx1ZHYsdlR29Hccd+R0DHg0eFx5JHlMeZx6ZHsEe6R4lH5Qfsh+8H+4f+B8qIDQgXCBmIJggoiCsILYg6CDyIAYhOCFgIYghxCEzIlEiWyKNIpciySLTIvsiBSM3I0EjSyNVI4cjmyOlI9cj/yMTJB0kpyaxJrsmxSbPJgEnCyc9J0cnZSdvJ6EnqyfdJ+cnGSgjKC0oQShLKF8ocyiHKJsopSivKLkowyjWKOAo8jQkNS41YDVqNZw1pjXENc41ADYKNhQ2HjZGNlA2WjZkNm42eDaWNqo2tDbHNtE2uDd=]]>
</Signal>
<Signal>
<Id>CCT_TX</Id>
<InitState>1</InitState>
<![CDATA[HQFPAVkBiwGVAZ8BqQHHAdEBAwINAjUCPwJxAnsCrQK3AsEC1QLzAv0CEQMbAzkDTQNrA3UDfwOJA7sDxQPtA/cDKQQzBEcEUQSDBI0EtQTJBN0E5wTxBAUFDwUZBS0FNwVBBUkXUxfbGeUZ1ijgKMc20Ta4N0==]]>
</Signal>
//////////////////////////////////////////////////////////////////////////////////////////////////////
</SignalData>
</TesterLog>
我的尝试:
What I have tried:
public void GetCDATA()
{
var xdoc = XDocument.Load(xmlfilepath);
var queryCDATAXML = xdoc.DescendantNodes().OfType<XCData>();
foreach (var item in queryCDATAXML)
{
Console.WriteLine(item);
Console.WriteLine();
}
}
推荐答案
看起来数据是Base64 - 维基百科 [ ^ ]编码,这对于XML文档中的二进制数据是常见的。
然后你必须将CDATA
字符串传递给base64解码器。请参阅 Convert.FromBase64String方法(字符串)(系统) [ ^ ]。
未经测试的例子(我不确定item
是字符串
):
Looks like the data are Base64 - Wikipedia[^] encoded which is common for binary data in XML documents.
Then you have to pass theCDATA
strings to a base64 decoder. See the Convert.FromBase64String Method (String) (System)[^].
Untested example (I don't know for sure ifitem
is aString
):
foreach (var item in queryCDATAXML)
{
byte[] cdata = Convert.FromBase64String(item);
// Binary data so we have to convert them for display
Console.WriteLine(" {0}\n", BitConverter.ToString(cdata));
Console.WriteLine();
}
这篇关于如何解码CDATA的内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文