如何在客户端解码 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;
以下是客户端中对象的外观:
"<?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>"
在客户端,我尝试将上面的对象转换为:
"<?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(/</g, '<').replace(/>/g, '>');
我编写了自己的解码器。
【讨论】:
以上是关于如何在客户端解码 XML 字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Firefox 中解码来自 jQuery $.ajax 请求的 XML 响应