[ad_1]
此方法为我提供了 xml 文件中 CDATA 部分的内容。 但我想解码这个CDATA。CDATA的内容是0和1的组合。 但它们是经过编码的,所以我得到了不同字母的组合,如 ABC12KJ 等……
我怎样才能得到解码后的数据。 ?
谢谢..
这是示例文件
<?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>
我尝试过的:
public void GetCDATA() { var xdoc = XDocument.Load(xmlfilepath); var queryCDATAXML = xdoc.DescendantNodes().OfType<XCData>(); foreach (var item in queryCDATAXML) { Console.WriteLine(item); Console.WriteLine(); } }
解决方案1
看起来数据是 Base64 – 维基百科[^] 编码,这对于 XML 文档中的二进制数据很常见。
然后你必须通过 CDATA
字符串到 Base64 解码器。 请参阅 Convert.FromBase64String 方法(字符串)(系统)[^]。
未经测试的示例(我不确定是否 item
是一个 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(); }
[ad_2]
コメント