我有一个像这样的XML字符串:
<Summary>Foo</Summary><Description>Bar</Description>
我想把它读成一个类对象:
class Foobar()
{
string Summary {get;set;}
string Description {get;set;}
}
我尝试使用XmlTextReader,但它抛出了一个没有找到根元素的异常。这就是我试过的:
using (XmlTextReader reader = new XmlTextReader(new StringReader(comment)))
{
while (reader.Read())
//do something here
}
我也尝试将它直接反序列化为这样的对象:
[XmlTypeAttribute]
public class Foobar
{
[XmlElementAttribute("Summary")]
public string Summary { get; set; }
[XmlElementAttribute("Description")]
public string Description { get; set; }
}
这也失败了,因为我没有为Foobar类定义[XmlRootElement]
,因为没有根元素。
答案 0 :(得分:3)
您需要为xaml设置根元素
<root>
<Summary>Foo</Summary><Description>Bar</Description>
</root>
对于XMLSeralizatoion中的Rootelement:http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlrootattribute.aspx
答案 1 :(得分:3)
定义根元素
<root>
<Summary>Foo</Summary>
<Description>Bar</Desciption>
</root>
答案 2 :(得分:1)
最简单的方法可能是手动添加根元素。
string xml = "<root>" + comment + "</root>";
然后你可以用你想要的任何方法解析它。
答案 3 :(得分:0)
使用允许XMLFragments的构造函数表单(XML块如果放入单个元素中可能有效,但不是根深蒂固的):
using (XmlTextReader reader = new XmlTextReader(comment, XmlNodeType.Element, null))
{
while (reader.Read())
//do something here
}
更好的是,使用Create()
,这仍然提供了更大的灵活性。