Десериализация не работающего XML содержит xmlns

#c# #xml #serialization

#c# #xml #сериализация

Вопрос:

Это моя строка xml.

 <test name="james" type="seoul" xmlns="test:client">
    <friends xmlns="friends:test">
        <friend xmlns="" name="john">
            Google
        </friend>
        <friend xmlns="" name="john">
            Amazon
        </friend>
    </friends>
</test>
  

И я попробовал этот код позади.

 [Serializable()]
[XmlRoot(ElementName = "test", Namespace = "test:client")]
public class TestModel
{
    public TestModel()
    {
    }

    [XmlAttribute("name")]
    public string Name { get; set; }
    [XmlAttribute("type")]
    public string Id { get; set; }
}
  

Я никогда не смогу изменить xml. и я хочу создать список содержимого в элементе friends.
пожалуйста, помогите мне!!

Ответ №1:

Попробуйте выполнить следующее :

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:temptest.xml";
        static void Main(string[] args)
        {
            XmlReader reader = XmlReader.Create(FILENAME);
            XmlSerializer serializer = new XmlSerializer(typeof(TestModel));
            TestModel testModel = (TestModel)serializer.Deserialize(reader);
        }
    }
    [XmlRoot(ElementName = "test", Namespace = "test:client")]
    public class TestModel
    {

        [XmlAttribute("name")]
        public string Name { get; set; }
        [XmlAttribute("type")]
        public string Id { get; set; }

        [XmlArray(ElementName = "friends", Namespace = "friends:test")]
        [XmlArrayItem("friend", Namespace = "")]
        public List<Friend> friends { get; set; }
    }
    public class Friend
    {
        [XmlText]
        public string text { get; set; }
    }
}