如何创建一个可序列化的类,以便用单个节点反序列化XML
本文关键字:单个 反序列化 节点 XML 序列化 创建 何创建 一个 | 更新日期: 2023-09-27 17:51:09
我找不到一种方法在c#中创建一个可序列化的类来处理来自具有单个节点的XML的反序列化,就像这样:
<?xml version="1.0"?>
<code>
GM47R4 5I3RR4 LUB
</code>
我一直在尝试使用XSD.exe首先创建XSD,然后创建c#类,但它不起作用。
谢谢你的帮助。
var xmlSer = new XmlSerializer(typeof (Code));
var code = new Code {Value = "xx"};
var sb = new StringBuilder();
var wri = new StringWriter(sb);
xmlSer.Serialize(wri, code);
Console.WriteLine(sb.ToString());
[XmlRoot(ElementName = "Code")]
public class Code
{
[XmlText]
public string Value { get; set; }
}
输出<?xml version="1.0" encoding="utf-16"?>
<Code xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
xx
</Code>
因此也可以用来反序列化xml,默认情况下名称空间将被忽略。
@woutervs的代码是很好的,如果你真的需要一个自定义类。对于这么简单的XML,真的有必要创建一个单独的类吗?可能不会,除非你的需求没有包含在你的问题中。
我只使用XDocument
类:
const string xml = @"<?xml version=""1.0""?>
<code>
GM47R4 5I3RR4 LUB
</code>";
XDocument document = XDocument.Parse(xml);
Console.WriteLine(document.Element("code").Value.Trim());
XDocument
也可以很容易地用于创建XML:
var document = new XDocument(new XElement("code", "GM47R4 5I3RR4 LUB"));
Console.WriteLine(document);