如何从第二个节点反序列化 xml

How to deserialize xml from the second node

我想反序列化 xml 的一部分,我试过了,但它不起作用。

class Program
{
    static void Main(string[] args)
    {
        var serializer = new XmlSerializer(typeof(Test), new XmlRootAttribute("Test"));
        using (var stream = new MemoryStream(Encoding.UTF8.GetBytes("<Root1><Root2><Test><Id>5</Id></Test></Root2></Root1>")))
        {
            var test = serializer.Deserialize(stream);
        }           
    }
}

public class Test
{
    public int Id;
}

我如何对 XmlSerializer 说从 <Test> 开始连载?

使用 XmlReader 移动到所需的节点。

using (var stream = new MemoryStream(Encoding.UTF8.GetBytes("<Root1><Root2><Test><Id>5</Id></Test></Root2></Root1>")))
using (var reader = XmlReader.Create(stream))
{
    reader.ReadToFollowing("Test");
    var test = (Test)serializer.Deserialize(reader);
}