DTD验证问题

时间:2015-01-30 19:00:47

标签: vb.net xml-dtd

我正在使用以下代码来验证XML文件:

'DTD validation
        Dim doc As XmlDocument = New XmlDocument()
        Dim dtdDoc As String = ftpPath & "\" & dtdDocument

        AppendText(vbCrLf)

        Try
            doc.Load(fileName)
        Catch ex As Exception
            AppendText(ex.Message)
            ShowFailMessage()
        End Try

        Dim isXmlValid As Boolean = True
        Dim xmlValMsg As New StringBuilder()
        Dim sw As New StringWriter()

        doc.Save(sw)
        doc.Save(fileName)

        Dim stream As Stream = New FileStream(fileName, FileMode.Open)
        Dim settings As New XmlReaderSettings()
        settings.ValidationType = ValidationType.DTD
        settings.DtdProcessing = DtdProcessing.Parse
        AddHandler settings.ValidationEventHandler, AddressOf ValidationCallBack
        Dim r As XmlReader = XmlReader.Create(stream, settings, "R:\ftproot\graphics\" & dtdDocument)

        While r.Read()
        End While

        r.Close()
        stream.Close()
        stream.Dispose()

Private Shared Sub ValidationCallBack(sender As Object, e As ValidationEventArgs)
    AppendText("DTD Validation Error: " & e.Message)
    isDTDValidated = False
End Sub

我从此验证码中收到以下错误:

“元素'MarketDate'具有无效的子元素'Date'。期望的可能元素列表:'DateFormat'。”

以下是相关的XML:

<MarketDate>
      <MarketDateRole>01</MarketDateRole>
      <Date>20150202</Date>
    </MarketDate>

以下是DTD中的内容:

<!ELEMENT MarketDate (MarketDateRole,DateFormat,Date)>

所以'Date'是一个有效的子元素。我猜测并不是日期无效,而是缺少DateFormat。我对这个假设是否正确?

0 个答案:

没有答案