1

我在创建 XmlDocument 类时遇到了一些麻烦。这是我试图做的:

Dim myDoc = New XmlDocument()

Dim docType As XmlDocumentType = myDoc.CreateDocumentType("DtdAttribute", Nothing, "DtdFile.dtd", Nothing)
myDoc.XmlResolver = Nothing
myDoc.AppendChild(docType)

Dim xmldecl As XmlDeclaration = myDoc.CreateXmlDeclaration("1.0", Encoding.GetEncoding("ISO-8859-15").BodyName, "yes")

Dim root As XmlElement = myDoc.CreateElement("RootElement")

myDoc.AppendChild(root)
myDoc.InsertBefore(xmldecl, root)

这将导致错误:无法在指定位置插入节点。抛出此错误的行是myDoc.InsertBefore(xmldecl, root)

只是无法弄清楚这一点。我应该按什么顺序插入这些元素?我尝试了不同的命令,但我认为我只是在做一些完全错误的事情,这甚至不应该放在首位:) 但是那该怎么做呢?

4

1 回答 1

1

这对我有用:

Dim myDoc As New XmlDocument()
Dim xmldecl As XmlDeclaration = myDoc.CreateXmlDeclaration("1.0", Encoding.GetEncoding("ISO-8859-15").BodyName, "yes")
myDoc.AppendChild(xmldecl)
Dim docType As XmlDocumentType = myDoc.CreateDocumentType("DtdAttribute", Nothing, "DtdFile.dtd", Nothing)
myDoc.XmlResolver = Nothing
myDoc.AppendChild(docType)
Dim root As XmlElement = myDoc.CreateElement("DtdAttribute")
myDoc.AppendChild(root)

请注意,根元素名称必须与name给定的参数相同XmlDocument.CreateDocumentType

但是,您可能会发现,要像这样从头开始构建 XML 文档,使用以下命令会更容易XmlTextWriter

Using writer As New XmlTextWriter("C:\Test.xml", Encoding.GetEncoding("ISO-8859-15"))
    writer.WriteStartDocument()
    writer.WriteDocType("DtdAttribute", Nothing, "DtdFile.dtd", Nothing)
    writer.WriteStartElement("DtdAttribute")
    writer.WriteEndElement()
    writer.WriteEndDocument()
End Using
于 2012-12-18T12:58:18.133 回答