2010-11-21 27 views
1

choses d'écriture Im dans un fichier XML à l'aide de XmlTextWriter VB2 problèmes avec VB de XMLWriter Net

Le code pour démarrer le xmlwriter est:

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) 

Est-il possible d'ajouter param = » sur "à la première ligne du fichier XML? Pour que cela ressemble à:

<?xml version="1.0" encoding="ISO-8859-1" param="on"?> 

La question suivante pourrait être stupide :) mais je ne peux pas le comprendre. J'essaie d'ajouter un type de document dans le fichier XML comme:

<!DOCTYPE Test SYSTEM "test/my.dtd"> 

Cependant lorsque je tente de régler cela je reçois des erreurs.

XMLobj.WriteDocType("Test", null, "test/my.dtd", null) 

L'erreur que je reçois est:

'null' is not declared. 'Null' constant is no longer supported; use 'System.DBNull' instead. 

Cependant lorsque je tente de remplacer nul avec System.DBNull je reçois l'erreur:

'DBNull' is a type in 'System' and cannot be used as an expression. 

Le résultat de la définition doctype devrait être comme:

<!DOCTYPE Test SYSTEM "test/my.dtd"> 

Merci dans avancez pour votre aide!

Répondre

3

Question 1:

Ce qu'il semble que vous essayez de faire est ajouter un "processing instruction" à votre Fichier XML Une instruction de traitement (PI) est une étiquette qui code les informations spécifiques à l'application, commençant par "<?" et se terminant par "?>". Pour ajouter un PI à votre fichier XML, vous devez utiliser la classe WriteProcessingInstruction method de la classe XmlTextWriter. Il y a deux parties à chaque PI, une cible et une valeur, et ce sont les deux paramètres acceptés par la méthode WriteProcessingInstruction.

Ainsi, dans votre cas, vous pouvez écrire le code suivant pour ajouter l'instruction de traitement:

XMLobj.WriteProcessingInstruction("xml", "version=""1.0"" encoding=""ISO-8859-1"" param=""on""") 

qui produirait:

<?xml version="1.0" encoding="ISO-8859-1" param="on"?> 


Question 2:

L'équivalent VB.NET de C# null est Nothing. Ce mot-clé spécifie la valeur par défaut d'un type de valeur ou une valeur NULL d'un type de référence.

Vous ne devriez pas utiliser System.DBNull sauf si vous avez affaire à des bases de données. DBNull représente une variante non initialisée ou une colonne de base de données inexistante.C'est pas équivalent à Nothing ou null. Je suis d'accord que le premier message d'erreur que vous obtenez est confus au mieux.

Ainsi, au lieu, la ligne pour écrire le Doctype dans le fichier XML doit être:

XMLobj.WriteDocType("Test", Nothing, "test/my.dtd", Nothing) 

qui produira:

<!DOCTYPE Test SYSTEM "test/my.dtd"> 
+0

Wow. Vous avez raison sur les deux questions. Merci! – PeeHaa

1

Je réponse sur « null » - il est appelé « Rien » dans VB.net

+0

Si mon représentant est assez élevé, je vais vous voter en ! Merci – PeeHaa