【发布时间】:2018-12-16 11:07:36
【问题描述】:
我正在使用XmlSerializer,我想实现XML树:
<request>
<ix>ID</ix>
<content>
<name>NAMEVALUE</name>
<visits>INT</visits>
<dateRequested>yyyy-MM-dd</dateRequested>
</content>
</request>
带型号:
[XmlRoot(ElementName = "request")]
public class RequestModel
{
[XmlElement("ix")]
[JsonProperty("ix")]
public int ID { get; set; }
[XmlElement("name")]
[JsonProperty("name")]
public string Name { get; set; }
[XmlElement("visits")]
[JsonProperty("visits")]
public int? Visits { get; set; }
[XmlElement("date")]
[JsonProperty("date")]
public DateTime Date { get; set; }
}
我应该使用什么属性来接收 XMl 树中的<content> 组?
我的序列化器:
IEnumerable<RequestJSONModel> getModels = _context.Requests.ToList();
foreach (var item in getModels)
{
RequestModel requestModel = new RequestModel();
Content contentModel = new Content();
//serialize
XmlSerializer xmlSerializer = new XmlSerializer(typeof(RequestModel));
var serializedItem = "";
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
using (StringWriter writer = new Utf8StringWriter())
{
xmlSerializer.Serialize(writer, xmlModel, ns);
serializedItem = writer.ToString(); // Your XML
}
serializedItem = serializedItem.Replace("\r\n", string.Empty);
}
如果我使用 jdwengstrong> 的解决方案,如何解析 public class RequestModel 和 public class Content?
【问题讨论】:
-
你可以试试object inside object ::
RequestModel->{public ContentModel model{get;set;}{ -
与您的问题无关,但您对
Utf8StringWriter的使用完全没有意义,因为在serializedItem = writer.ToString()之后,您的序列化数据是back to UTF-16。 -
@GSerg 替换为
.ToArray()应该足够了吗? -
StringWriter没有定义ToArray()。在所有情况下,所有strings 始终为 UTF-16。 -
@GSerg 稍后我需要使用
XmlDocument xmlFile = new XmlDocument(); xmlFile.LoadXml(serializedItem);创建 XML 文档,据我所知,它无论如何都会给我一个字符串。是否可以使用此解决方案在最后对其进行编码? stackoverflow.com/questions/14057434/… 这样:byte[] bytes = Encoding.Default.GetBytes(serializedItem); serializedItem = Encoding.UTF8.GetString(bytes);?
标签: c# xml xml-serialization