【发布时间】:2017-10-13 07:13:26
【问题描述】:
我有这样的代码:
using System;
using System.IO;
using System.Xml.Serialization;
namespace ConsoleApp1
{
[XmlRoot(ElementName = "doc")]
public class Doc
{
[XmlElement(ElementName = "headline")]
public string Headline { get; set; }
}
static class Program
{
static void Main(string[] args)
{
Doc res;
var serializer = new XmlSerializer(typeof(Doc));
using (var reader = new StringReader(File.ReadAllText("test.xml")))
{
res = (Doc) serializer.Deserialize(reader);
}
Console.Out.WriteLine(res.Headline.ToString());
}
}
}
我的test.xml 文件包含这样的信息:
<doc>
<headline>AZERTY on the English <hlword>QWERTY</hlword> layout.
</headline>
</doc>
当我尝试解析它时,我有一个异常:
System.InvalidOperationException occurred
HResult=0x80131509
Message=There is an error in XML document (2, 35).
Source=System.Xml
StackTrace:
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
at System.Xml.Serialization.XmlSerializer.Deserialize(TextReader textReader)
at ConsoleApp1.Program.Main(String[] args) in D:\Documents\Visual Studio 2017\Projects\ConsoleApp1\ConsoleApp1\Program.cs:line 24
Inner Exception 1:
XmlException: Unexpected node type Element. ReadElementString method can only be called on elements with simple or empty content. Line 2, position 35.
我需要从这些文件中获取AZERTY on the English <hlword>QWERTY</hlword> layout. 或AZERTY on the English QWERTY layout. 的输出。我需要将什么类型设置为Doc 的Headline 属性才能获得这样的文本(可能需要调用ToString() 属性)?
附:我正在使用带有 VisualStudio 2017 (15.3.3) 的 Creators Update 的 Windows 10
【问题讨论】:
标签: c# xml xml-parsing