如何反序列化命名的XML节点并获取其所有子节点C#

时间:2015-02-18 17:10:19

标签: c# xml-deserialization

我可以使用以下XML,我可以在C#中反序列化:

<?xml version="1.0" encoding="iso-8859-1" ?>
<ProductList>
    <Product>
        <MyDesc><![CDATA[DOCTOR WHO - PLANET OF THE DEA]]></MyDesc>
        <ActualStock><![CDATA[5]]></ActualStock>
    </Product>
</ProductList>

但是,如果我添加一个新节点,例如MetaData,我不知道如何将该节点及其所有子节点作为文本:

<?xml version="1.0" encoding="iso-8859-1" ?>
<ProductList>
    <Product>
        <MyDesc><![CDATA[DOCTOR WHO - PLANET OF THE DEA]]></MyDesc>
        <ActualStock><![CDATA[5]]></ActualStock>
        **<MetaData>
            <Desc>MD-Description - This is my product desc</Desc>
            <Image>MD - The main image</Image>
        </MetaData>**   
    </Product>
</ProductList>

即我想抓取并将MetaData中的所有内容存储为一个字符串。麻烦是MetaData的孩子是未知的。

这可能吗?

我认为deserialiser会使用它来匹配MetaData节点:

    [XmlElement("MetaData")]
    public List<MetaData> MetaDataList
    {
        get 
        {
            return metaDataList;
        }
        set
        {
            metaDataList = value;
        }
    }

然后使用以下方法找出MetaData的孩子:

    private List<MetaData> metaDataList = new List<MetaData>();

    public class MetaData
    {
        [XmlAnyElement]
        public List<string> Children
        {
            get;
            set;
        }
    }

你可以看到我完全陷入了......

指针将不胜感激。

感谢。

西

0 个答案:

没有答案