VB Net的XMLWriter存在2个问题

时间:2010-11-21 00:13:34

标签: .net xml vb.net xml-serialization xmlwriter

我使用VB .net的XmlTextWriter

将内容写入XML文件

启动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.

但是当我尝试用System.DBNull替换null时,我收到错误:

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

doctype def的结果应该是:

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

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

问题1:

您尝试执行的操作是将"processing instruction"附加到XML文件中。处理指令(PI)是一种对特定于应用程序的信息进行编码的标记,从"<?"开始到"?>"结束。

要将PI添加到XML文件,您需要使用XmlTextWriter类的WriteProcessingInstruction method。每个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:

C#的null的VB.NET等价物是Nothing。此关键字指定值类型的默认值,或引用类型的空值。

除非您正在处理数据库,否则不应使用System.DBNullDBNull表示未初始化的变体或不存在的数据库列。 等同于Nothingnull。我同意您收到的第一条错误消息充其量是令人困惑的。

因此,将DocType写入XML文件的行应该是:

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

将产生:

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

答案 1 :(得分:1)

我回答“null” - 它在VB.net中被称为“Nothing”