2 проблемы с XMLWriter от VB Net - PullRequest
       36

2 проблемы с XMLWriter от VB Net

1 голос
/ 21 ноября 2010

Я пишу материал в файл XML, используя Vml .net XmlTextWriter

Код для запуска 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)

Возможно ли добавить param = "on"в первой строке файла XML?Так что это будет выглядеть так:

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

Следующий вопрос может быть глупым :), но я просто не могу понять это.Я пытаюсь добавить тип документа в файл XML, например:

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

Однако, когда я пытаюсь настроить это, я получаю некоторые ошибки.

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

Я получаю следующую ошибку:

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

Однако, когда я пытаюсь заменить null на System.DBNull, я получаю ошибку:

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

Результат определения типа документа должен быть таким:

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

Заранее спасибо за помощь!

Ответы [ 2 ]

3 голосов
/ 21 ноября 2010

Вопрос 1:

Похоже, вы пытаетесь добавить «инструкцию по обработке» к вашему XML-файлу. Инструкция обработки (PI) - это тег, который кодирует специфическую для приложения информацию, начиная с "<?" и заканчивая "?>".

Чтобы добавить PI к вашему XML-файлу, вам необходимо использовать WriteProcessingInstruction метод класса XmlTextWriter. Каждое значение PI состоит из двух частей: цели и значения, и эти два параметра принимаются методом WriteProcessingInstruction.

Итак, в вашем случае вы должны написать следующий код для добавления инструкции обработки:

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

, что даст:

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


Вопрос 2:

VB.NET-эквивалент C # null равен Nothing. Это ключевое слово указывает либо значение по умолчанию для типа значения, либо нулевое значение для ссылочного типа.

Не следует использовать System.DBNull, если вы не имеете дело с базами данных. DBNull представляет неинициализированный вариант или несуществующий столбец базы данных. не эквивалентно Nothing или null. Я согласен, что первое полученное вами сообщение об ошибке в лучшем случае сбивает с толку.

Таким образом, вместо этого строка для записи DocType в файл XML должна быть:

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

который будет производить:

<!DOCTYPE Test SYSTEM "test/my.dtd">
1 голос
/ 21 ноября 2010

У меня есть ответ о "null" - в VB.net он называется "Nothing"

...