我找不到在C#中创建可序列化类的方法来处理来自具有单个节点的XML的反序列化,如下所示:
<?xml version="1.0"?>
<code>
GM47R4 5I3RR4 LUB
</code>
我一直在尝试使用XSD.exe首先创建XSD然后再创建C#类,但它不起作用。
感谢您的帮助。
答案 0 :(得分:1)
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,默认情况下会忽略命名空间。
答案 1 :(得分:1)
@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);