Ich empfange XML in einer Struktur, die ich nicht kontrollieren kann, und versuche, das XML mit C# zu deserialisieren. Das XML enthält mehrere Namespaces. Der größte Teil des XML befindet sich in einem Namespace, aber ein Teil enthält ein Attribut in einem anderen Namespace. Mein Problem ist, dass der Inhaltsknoten immer als null dekodiert wird. Was muss ich tun, um dies zu korrigieren?XML-Deserialisierung mit C#, das Element mit einem Attribut in einem anderen Namespace enthält
Mein XML ist unten angegeben.
<Documents xmlns="http://mycompany.com/api/v2" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Document>
<Id>100000</Id>
<Title>Document Title</Title>
<Locale>en-US</Locale>
<Status>Archived</Status>
<PublishDate>2016-06-01T16:40:00</PublishDate>
<PublishDateUTC>2016-06-01T21:40:00Z</PublishDateUTC>
<UpdateDateUTC>2016-06-01T21:40:00Z</UpdateDateUTC>
<Companies>
<Company>
<Id>1C000TX2343</Id>
<Name>Company Name</Name>
<Status>Public</Status>
<OperationStatus>N</OperationStatus>
<Country>USA</Country>
</Company>
</Companies>
<Content i:type="CRCMinute">
<AssetClass>Corporate</AssetClass>
<CommitteeAlphaRating>BB+</CommitteeAlphaRating>
<CommitteeCreditTrend>Negative</CommitteeCreditTrend>
<CommitteeMeetingDate>2016-06-01T00:00:00</CommitteeMeetingDate>
<CreditWatch i:nil="true"/>
<RatingStatus i:nil="true"/>
<ShortTermRating i:nil="true"/>
<SignatureDate>2016-06-01T16:40:00</SignatureDate>
<SignatureText>Alfred Neumann</SignatureText>
</Content>
</Document>
</Documents>
Die Klasse, die ich verwende, um das XML zu deserialisieren, wird ebenfalls bereitgestellt.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Xml.Serialization;
namespace Morningstar.CreditRatings.CorporateShortTerm
{
[XmlRoot("Documents")]
public class RPSDocuments
{
[XmlElement("Document")]
public List<DocumentData> DocumentData { get; set; }
}
[Serializable]
public class DocumentData
{
[XmlElement]
public string Id { get; set; }
[XmlElement]
public string Title { get; set; }
[XmlElement]
public string PublishDate { get; set; }
[XmlElement]
public string PublishDateUTC { get; set; }
[XmlElement]
public string UpdateDateUTC { get; set; }
[XmlArray("Companies")]
[XmlArrayItem("Company")]
public List<CompanyData> Companies { get; set; }
[XmlElement("Content", Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
public DocumentContentData Content { get; set; }
}
[Serializable]
public class CompanyData
{
[XmlElement]
public string Id { get; set; }
public string Name { get; set; }
[XmlElement]
public string Status { get; set; }
[XmlElement]
public string OperationStatus { get; set; }
[XmlElement]
public string Country { get; set; }
}
[Serializable]
public class DocumentContentData
{
[XmlElement]
public string Analyst { get; set; }
[XmlElement]
public string AssetClass { get; set; }
[XmlElement]
public string CommitteeAlphaRating { get; set; }
[XmlElement]
public string CommitteeCreditTrend { get; set; }
[XmlElement]
public string CommitteeMeetingDate { get; set; }
[XmlElement]
public string CreditWatch { get; set; }
[XmlElement]
public string RatingStatus { get; set; }
[XmlElement]
public string ShortTermRating { get; set; }
[XmlElement]
public string SignatureDate { get; set; }
[XmlElement]
public string SignatureText { get; set; }
}
}
Ändern RPSDocuments: [XmlRoot (ElementName = "Dokumente", Namespace = "http://mycompany.com/api/v2")] – jdweng