我该如何解析这个XML String?

时间:2011-11-25 08:04:05

标签: c# xml

我有一个像这样的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],因为没有根元素。

4 个答案:

答案 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(),这仍然提供了更大的灵活性。