如何在客户端解码 XML 字符串

Posted

技术标签:

【中文标题】如何在客户端解码 XML 字符串【英文标题】:How to decode XML string in client side 【发布时间】:2020-08-30 09:02:13 【问题描述】:

我有一个 Web 服务,它被客户端访问并返回一个序列化 XML 对象的 XML 字符串。

我有这个序列化为 XML 的类:

public class ControlValveResultModel

    public string Selection  get; set; 
    public int PipeCount  get; set; 
    public int ControlValveCount  get; set; 
    public int ServiceValveCount  get; set; 

这里是在对象发送到客户端之前对其进行序列化的函数:

    public string ToXML<T>(T dataToSerialize)
    
        try
        
            var stringwriter = new System.IO.StringWriter();
            var serializer = new XmlSerializer(typeof(T));
            serializer.Serialize(stringwriter, dataToSerialize);
            return stringwriter.ToString();
        
        catch
        
            throw;
        
    

以下是客户端中对象的外观:

"&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;ControlValveResultModel xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;     &lt;Selection&gt;184028.884942584,664923.573252621,183875.392224311,664759.166484197&lt;/Selection&gt;
  &lt;PipeCount&gt;78&lt;/PipeCount&gt;
  &lt;ControlValveCount&gt;4&lt;/ControlValveCount&gt;
  &lt;ServiceValveCount&gt;26&lt;/ServiceValveCount&gt;
&lt;/ControlValveResultModel&gt;"

在客户端,我尝试将上面的对象转换为:

"<?xml version="1.0" encoding="utf-16"?>
<ControlValveResultModel xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Selection>184028.884942584,664923.573252621,183875.392224311,664759.166484197</Selection>
  <PipeCount>78</PipeCount>
  <ControlValveCount>4</ControlValveCount>
  <ServiceValveCount>26</ServiceValveCount>
</ControlValveResultModel>"

我试过这个来解码:

var stringXML = decodeURIComponent(data)

但是 stringXML 没有被解码。

如何解码上面的 XML 并获得价值?

【问题讨论】:

这能回答你的问题吗? Parse XML using javascript 使用以下代码:System.Net.WebUtility.htmlDecode(string)。序列化不适用于 utf-16,因此您必须跳过第一行。因此,在反序列化时,我使用 put int a StringReader 或 StreamReader 并在反序列化之前使用 ReadLine()。 【参考方案1】:

这是一个解决方案:

var stringXML = data.replace(/&lt;/g, '<').replace(/&gt;/g, '>');

我编写了自己的解码器。

【讨论】:

以上是关于如何在客户端解码 XML 字符串的主要内容,如果未能解决你的问题,请参考以下文章

webservice如何返回json字符串

如何在 PHP 中使用其编码类型解码邮件标头字符串

如何在 Firefox 中解码来自 jQuery $.ajax 请求的 XML 响应

如何使用 JSON 输入字符串从编排中调用 JSON 解码器?

如何以正确的方式编码和解码字符[重复]

关于Base64解码的问题: