如何解码CDATA的内容 [英] How to decode the contents of CDATA

查看:111
本文介绍了如何解码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 the CDATA strings to a base64 decoder. See the Convert.FromBase64String Method (String) (System)[^].

Untested example (I don't know for sure if item is a String):
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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆