는XmlReader가 각 요소에 네임 스페이스 URI를 추가하는 이유는 무엇입니까?
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<OrganisationMetaData xmlns="urn:organisationMetaDataSchema">
<Organisations>
<Organisation>
<Code>XXX</Code>
<Name>Yyyyyy</Name>...
내가 문자열 배의 하중을 수행했지만, 스트림과 친절 네임 스페이스를 추가한다 객체 속성을 모든 복잡한 요소에 적용합니다. 방금 xmlns 특성을 제거하고 스키마에 대해 유효성 검사를 잊어 버리면 빈 xmlns 특성이 추가됩니다. 내가 가진 문제는 XmlSerializer (?)의 Deserialize 메서드가 특성을 기대하지 않는다는 오류가 발생한다는 것입니다. XmlRoot 및 XmlType 특성을 사용하여 클래스를 꾸리려고했지만이 변경되지 않았습니다. 여기
내가이 사용 DataContractSerializer를 시도했습니다public IList<Organisation> DeserializeOrganisations(Stream stream)
{
var serializer = new XmlSerializer(typeof(OrganisationMetaData));
var mappingAssembly = //Resource in another assembly
var schemas = new XmlSchemaSet();
schemas.Add(
"urn:organisationMetaDataSchema",
XmlReader.Create(
mappingAssembly.GetManifestResourceStream(
// An xml schema
)
)
);
var settings = new XmlReaderSettings()
{
ValidationType = ValidationType.Schema,
Schemas = schemas,
ValidationFlags =
XmlSchemaValidationFlags.ReportValidationWarnings
};
settings.ValidationEventHandler += settings_ValidationEventHandler;
var reader = XmlReader.Create(stream, settings);
var metaData= (OrganisationMetaData)serializer.Deserialize(reader);
return metaData.Organisations.ToList();
}
작업을 수행하는 데 사용되는 방법 내가 여기
[XmlRoot(
ElementName = "OrganisationMetaData",
Namespace = "urn:organisationMetaDataSchema")]
public class OrganisationMetaData
{
public List<Organisation> Organisations { get; set; }
}
[XmlType(
TypeName = "Organisation",
Namespace = "urn:organisationMetaDataSchema")]
public class Organisation
{
public string Code {get; set;}
public string Name {get; set;}
}
로 직렬화하는 클래스의입니다하지만 그것이 자신의 oppotunities의 제공 배우면 누구나 XmlSerializer가 작동하도록 속성에 넣어야하는 것을 도울 수 있다면 큰 도움이 될 것입니다.
감사합니다. 감사드립니다.
감사합니다. 마크, 지금은 약간의 뇌가 퇴색하고 있습니다. 내 XML에는 문자열에있는 작은 따옴표가 없습니다. 어떻게 이것을 극복하겠습니까? 바꾸기 (...)와 같은 간단한 것입니까? –
나는 여기에 대해 생각해 볼 수있는 모든 것을 시도했다. 약 8 시간 후에 DataContractSerializer 대신 포기하고 대신 동쪽에서 xml에 대해 마음에 들지 않는 것에 대해 조금 더 말해 줄 수있다. . 도와 줘서 고마워 마크 : –
@ 마크 - 작은 따옴표는 중요하지 않습니다. 게시 된 코드는 사용자가 인용 한 xml을 deserialize해야합니다. 수업을 게시 할 수 있습니까 (또는 원하는 경우 전자 메일로 보낼 수 있습니까)? 나는 무엇이 잘못되었는지를 말할 수 있다고 확신한다 ... –