【发布时间】: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()。
标签: javascript c# .net xml web-services