c# – 如何针对dtd验证xml
发布时间:2020-12-15 21:14:32 所属栏目:百科 来源:网络整理
导读:我有一个 XML文档: ?xml version="1.0" encoding="utf-8"?!DOCTYPE ONIXMessage SYSTEM "http://www.editeur.org/onix/2.1/reference/onix-international.dtd"ONIXMessage Header FromCompanyCompanyy/FromCompany SentDate20101213/SentDate /Header Produ
我有一个
XML文档:
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE ONIXMessage SYSTEM "http://www.editeur.org/onix/2.1/reference/onix-international.dtd"> <ONIXMessage> <Header> <FromCompany>Companyy</FromCompany> <SentDate>20101213</SentDate> </Header> <Product> <RecordReference>153640</RecordReference> <NotificationType>03</NotificationType> <ProductIdentifier> <ProductIDType>03</ProductIDType> <IDValue>9785714009341</IDValue> </ProductIdentifier> <ProductForm>AC</ProductForm> <NumberOfPieces>1</NumberOfPieces> <ProductClassification> <ProductClassificationType>02</ProductClassificationType> <ProductClassificationCode>55101514</ProductClassificationCode> </ProductClassification> <Title> <TitleType>01</TitleType> <TitleText>Jazz Piano. Volume 3.</TitleText> </Title> <Contributor> <SequenceNumber>1</SequenceNumber> <ContributorRole>A01</ContributorRole> <PersonName>Waller Fats</PersonName> <PersonNameInverted>Fats,Waller</PersonNameInverted> <TitlesBeforeNames> </TitlesBeforeNames> <NamesBeforeKey>Waller</NamesBeforeKey> <PrefixToKey> </PrefixToKey> <KeyNames>Fats</KeyNames> <SuffixToKey> </SuffixToKey> </Contributor> <Contributor> <SequenceNumber>2</SequenceNumber> <ContributorRole>A01</ContributorRole> <PersonName>Peterson Oscar</PersonName> <PersonNameInverted>Oscar,Peterson</PersonNameInverted> <TitlesBeforeNames> </TitlesBeforeNames> <NamesBeforeKey>Peterson</NamesBeforeKey> <PrefixToKey> </PrefixToKey> <KeyNames>Oscar</KeyNames> <SuffixToKey> </SuffixToKey> </Contributor> <Contributor> <SequenceNumber>3</SequenceNumber> <ContributorRole>A01</ContributorRole> <PersonName>Kenton Stan</PersonName> <PersonNameInverted>Stan,Kenton</PersonNameInverted> <TitlesBeforeNames> </TitlesBeforeNames> <NamesBeforeKey>Kenton</NamesBeforeKey> <PrefixToKey> </PrefixToKey> <KeyNames>Stan</KeyNames> <SuffixToKey> </SuffixToKey> </Contributor> <Contributor> <SequenceNumber>4</SequenceNumber> <ContributorRole>A01</ContributorRole> <PersonName>Evans Bill</PersonName> <PersonNameInverted>Bill,Evans</PersonNameInverted> <TitlesBeforeNames> </TitlesBeforeNames> <NamesBeforeKey>Evans</NamesBeforeKey> <PrefixToKey> </PrefixToKey> <KeyNames>Bill</KeyNames> <SuffixToKey> </SuffixToKey> </Contributor> <Contributor> <SequenceNumber>5</SequenceNumber> <ContributorRole>A01</ContributorRole> <PersonName>Shearing George</PersonName> <PersonNameInverted>George,Shearing</PersonNameInverted> <TitlesBeforeNames> </TitlesBeforeNames> <NamesBeforeKey>Shearing</NamesBeforeKey> <PrefixToKey> </PrefixToKey> <KeyNames>George</KeyNames> <SuffixToKey> </SuffixToKey> </Contributor> <Contributor> <SequenceNumber>6</SequenceNumber> <ContributorRole>A01</ContributorRole> <PersonName>D. Ellington</PersonName> <PersonNameInverted>Ellington,D.</PersonNameInverted> <TitlesBeforeNames> </TitlesBeforeNames> <NamesBeforeKey>D.</NamesBeforeKey> <PrefixToKey> </PrefixToKey> <KeyNames>Ellington</KeyNames> <SuffixToKey> </SuffixToKey> </Contributor> <Contributor> <SequenceNumber>7</SequenceNumber> <ContributorRole>A01</ContributorRole> <PersonName>Corea Chic</PersonName> <PersonNameInverted>Chic,Corea</PersonNameInverted> <TitlesBeforeNames> </TitlesBeforeNames> <NamesBeforeKey>Corea</NamesBeforeKey> <PrefixToKey> </PrefixToKey> <KeyNames>Chic</KeyNames> <SuffixToKey> </SuffixToKey> </Contributor> <Language> <LanguageRole>01</LanguageRole> <LanguageCode>rus</LanguageCode> </Language> <NumberOfPages>0</NumberOfPages> <MainSubject> <MainSubjectSchemeIdentifier>20</MainSubjectSchemeIdentifier> <SubjectHeadingText>Nuotit,Jazz pianolle</SubjectHeadingText> </MainSubject> <OtherText> <TextTypeCode>01</TextTypeCode> <Text>Contents<br> Thomas ?Fats? WALLER. Keepin' out of Mischief Now Oscar PETERSON. Whisper Not Stan KENTON. Painted Rhythm Oscar PETERSON. The Nearness of You Stan KENTON. Southern Scandal<br> Nat ?King? COLE. Blues<br> Bill EVANS. Interplay (Blues F minor) Bill EVANS. Very Early George SHEARING. Changing with the Times Duke ELLINGTON. Echoes of Harlem Chick COREA. Gemini</Text> </OtherText> <MediaFile> <MediaFileTypeCode>04</MediaFileTypeCode> <MediaFileFormatCode>03</MediaFileFormatCode> <MediaFileLinkTypeCode>01</MediaFileLinkTypeCode> <MediaFileLink>9785714009341.jpg</MediaFileLink> <MediaFileDate>20101220</MediaFileDate> </MediaFile> <ProductWebsite> <ProductWebsiteLink>http://www.site.com/344.html</ProductWebsiteLink> </ProductWebsite> <Publisher> <PublisherName>Muzyka</PublisherName> </Publisher> <CountryOfPublication>RU</CountryOfPublication> <PublishingStatus>04</PublishingStatus> <PublicationDate>2010</PublicationDate> <SupplyDetail> <SupplierName>Company</SupplierName> <ProductAvailability>21</ProductAvailability> <Price> <PriceTypeCode>02</PriceTypeCode> <PriceAmount>9.0000</PriceAmount> <CurrencyCode>EUR</CurrencyCode> <TaxRateCode1>S</TaxRateCode1> <TaxRatePercent1>9</TaxRatePercent1> </Price> </SupplyDetail> </Product> </ONIXMessage> 验证码是: xml = "this XML document above"; var r = new XmlTextReader(new StringReader(xml)); var settings = new XmlReaderSettings(); var sb = new StringBuilder(); settings.ProhibitDtd = false; settings.ValidationType = ValidationType.DTD; settings.ValidationEventHandler += (a,e) => { sb.AppendLine(e.Message); ret = false; }; XmlReader validator = XmlReader.Create(r,settings); while (validator.Read()) { } validator.Close(); 我收到验证错误:
但是,当我将此XML发送给我的合作伙伴时,他说该文档不包含验证错误. 解决方法
从我能读到的内容我猜你的.dtd包含错误,而不是你的代码.您是否检查过.dtd包含< Language>的定义?这是孩子们的?
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |