다음 xml을 Object로 deserialize하려고합니다. XML에는 여러 네임 스페이스가 있습니다. Xml을 개체로 역 직렬화하려고했습니다. 개체 (데이터)에는 LastChannel 개체에 대한 참조가 있습니다. 그러나 LastChannel을 제공해야하는 data.channel을 요청하면 nullpointer가 나타납니다.
XML :
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:mp="http://www.tagesschau.de/rss/1.0/modules/metaplus/"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>title</title>
<description>Default description</description>
<dc:date>2013-04-15 13:27:06</dc:date>
<sy:updateBase>2013-04-15 13:27:06</sy:updateBase>
<sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>12</sy:updateFrequency>
</channel>
</rdf:RDF>
개체는 다음과 같습니다.
[XmlRoot("RDF", Namespace = "http://www.w3.org/1999/02/22-rdf-syntax-ns#")]
public class LastRss
{
[XmlElement("channel")]
public LastChannel channel { get; set; }
}
과
public class LastChannel
{
[XmlElement("title")]
public string title { get; set; }
[XmlElement("description")]
public string description { get; set; }
[XmlElement("date", Namespace = "http://purl.org/dc/elements/1.1/")]
public DateTime date { get; set; }
[XmlElement("updateBase", Namespace = "http://purl.org/rss/1.0/modules/syndication/")]
public DateTime updateBase { get; set; }
[XmlElement("updatePeriod", Namespace = "http://purl.org/rss/1.0/modules/syndication/")]
public string updatePeriod { get; set; }
[XmlElement("updateFrequency", Namespace = "http://purl.org/rss/1.0/modules/syndication/")]
public int updateFrequency { get; set; }
}
data.channel이 null이 아닌 이유를 아는 사람이 있습니까?
직렬 변환기 :
LastRss data = new LastRss();
XmlSerializer serializer = new XmlSerializer(typeof(LastRss));
System.IO.TextReader reader = new System.IO.StringReader(xml);
try
{
object o = serializer.Deserialize(reader);
data = (LastRss)o;
}
채널은 기본값 xmlns
인 즉,http://purl.org/rss/1.0/
[XmlElement("channel", Namespace = "http://purl.org/rss/1.0/")]
public LastChannel channel { get; set; }
또한 날짜 형식을 수정해야합니다 (예 : 2013-04-15**T**13:27:06
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다