2 problemi con XMLWriter di VB Net
-
26-09-2019 - |
Domanda
Im roba scritta in un file XML utilizzando VB .net's XmlTextWriter
Il codice per avviare il XmlWriter è:
Dim XMLobj As Xml.XmlTextWriter
Dim enc As System.Text.Encoding
enc = System.Text.Encoding.GetEncoding("ISO-8859-1")
XMLobj = New Xml.XmlTextWriter("C:\filename.xml", enc)
E 'possibile aggiungere param = "on" alla prima riga del file XML? In modo che sarà simile a:
<?xml version="1.0" encoding="ISO-8859-1" param="on"?>
La domanda successiva potrebbe essere uno stupido :), ma non riesco proprio a capirlo. Io cerco di aggiungere un doctype al file XML come:
<!DOCTYPE Test SYSTEM "test/my.dtd">
Tuttavia quando provo ad installare questo ricevo alcuni errori.
XMLobj.WriteDocType("Test", null, "test/my.dtd", null)
L'errore che ottengo è:
'null' is not declared. 'Null' constant is no longer supported; use 'System.DBNull' instead.
Tuttavia quando provo a sostituire nulla con System.DBNull ottengo l'errore:
'DBNull' is a type in 'System' and cannot be used as an expression.
Il risultato del doctype def dovrebbe essere come:
<!DOCTYPE Test SYSTEM "test/my.dtd">
Grazie in anticipo per il vostro aiuto!
Soluzione
Domanda 1:
Quello che sembra che stai cercando di fare è aggiungere un " l'elaborazione di istruzione " al file XML. Un'istruzione di elaborazione (PI) è un tag che codifica le informazioni applicazioni specifiche, a cominciare da "<?"
e termina con "?>"
.
Per aggiungere un PI al file XML, è necessario utilizzare il metodo WriteProcessingInstruction
della classe XmlTextWriter
. Ci sono due parti di ogni PI, un obiettivo e un valore, e questi sono i due parametri accettati dal metodo WriteProcessingInstruction
.
Quindi, nel tuo caso, si avrebbe scritto il seguente codice per aggiungere l'istruzione di elaborazione:
XMLobj.WriteProcessingInstruction("xml", "version=""1.0"" encoding=""ISO-8859-1"" param=""on""")
che produrrebbe:
<?xml version="1.0" encoding="ISO-8859-1" param="on"?>
Domanda 2:
Il VB.NET equivalente di C # 's null
è Nothing
. Questa parola chiave specifica sia il valore predefinito di un tipo di valore, o un valore nullo di un tipo di riferimento.
Non dovrebbe usare System.DBNull
a meno che non hai a che fare con i database. DBNull
rappresenta una variante non inizializzata o colonna di database inesistente. Si tratta di non equivalente a Nothing
o null
. Sono d'accordo che il primo messaggio di errore che si ottiene è confusa al massimo.
Così, invece, la linea per scrivere il DocType al file XML dovrebbe essere:
XMLobj.WriteDocType("Test", Nothing, "test/my.dtd", Nothing)
che produrrà:
<!DOCTYPE Test SYSTEM "test/my.dtd">
Altri suggerimenti
Non ho risposta su "null" - si chiama "Nothing" in VB.net