【问题标题】:2 problems with VB Net's XMLWriterVB Net 的 XMLWriter 的 2 个问题
【发布时间】:2010-11-21 00:13:34
【问题描述】:

我正在使用 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,例如:

<!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 def 的结果应该是这样的:

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

提前感谢您的帮助!

【问题讨论】:

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


    【解决方案1】:

    问题 1:

    看起来您正在尝试将"processing instruction" 附加到您的XML 文件中。处理指令 (PI) 是对特定于应用程序的信息进行编码的标记,以 "&lt;?" 开头并以 "?&gt;" 结尾。

    要将 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">
    

    【讨论】:

      【解决方案2】:

      我有关于“null”的答案——在 VB.net 中它被称为“Nothing”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-08
        • 1970-01-01
        • 2010-12-11
        相关资源
        最近更新 更多