【问题标题】:xml notepad command line swithchesxml记事本命令行开关
【发布时间】:2014-05-12 16:27:01
【问题描述】:

我想在 XML Notepad 2007 中打开一个 XML 文件,并使用来自批处理文件或 VB6 函数的命令行以不同的名称保存它。此操作的目的是让每个 XML 元素在自己的行上,这是我进一步数据处理所需要的。 我已经找到了如何在 XML Notepad 2007 中打开文件,但找不到任何有关将执行文件“另存为”的开关/参数的信息。

【问题讨论】:

标签: xml vb6


【解决方案1】:

您可以在 VB6 中使用 MSXML 自己完成此操作。这是一个小演示:

Option Explicit

Private Sub ManageUI()
    'Make UI changes based on the relationships of controls and their
    'current values.
    chkStandalone.Enabled = chkOmitXMLDeclaration.Value <> vbChecked
End Sub

Private Sub chkOmitXMLDeclaration_Click()
    ManageUI
End Sub

Private Sub cmdReformat_Click()
    Dim rdrCompact As MSXML2.SAXXMLReader
    Dim wrtFormatted As MSXML2.MXXMLWriter

    Set wrtFormatted = New MSXML2.MXXMLWriter
    With wrtFormatted
        .omitXMLDeclaration = chkOmitXMLDeclaration.Value = vbChecked
        .standalone = chkStandalone.Value = vbChecked
        .indent = chkIndent.Value = vbChecked
        .output = "" 'Tells MXXMLWriter we want Unicode String output.
        Set rdrCompact = New MSXML2.SAXXMLReader
        With rdrCompact
            Set .contentHandler = wrtFormatted
            Set .dtdHandler = wrtFormatted
            Set .errorHandler = wrtFormatted
            .putProperty "http://xml.org/sax/properties/lexical-handler", _
                         wrtFormatted
            .putProperty "http://xml.org/sax/properties/declaration-handler", _
                         wrtFormatted
            .parse txtOriginal.Text
        End With
        txtPrettied.Text = .output
    End With
End Sub

Private Sub Form_Load()
    ManageUI
End Sub

【讨论】:

  • 谢谢,Bob,如果我理解正确,如果 XML 源的大小允许剪切并粘贴到上层窗口中,您的解决方案就很棒;但是,在我的情况下,我需要一个函数来传递要处理的源文件名和导出文件名的引用,因为我拥有的 XML 文件大小约为 300MB。
  • 那是因为它是一个示例,而不是免费的完成代码来订购。查看 MSXML 文档。让读取器解析输入文件,写入器写入输出流没有问题(ADO.Stream 工作正常,可以保存到磁盘)。如果您的输出对于 ADO.Stream 来说太大,您可以使用您自己的实现 IStream 的代码对输出数据进行编码并将其写入磁盘。或者跳过编写器并在您自己的 VB6 类中实现 ISAXContentHandler 接口来处理 SAX 输出事件。
  • Bob,如果您有兴趣为我做一些小型(付费)编程工作,请发送电子邮件至 dubravko@barac.ca
  • 谢谢,但我现在有足够的合同工作让我忙碌。也许其他人会接受你。
  • 顺便说一句:如果您有输入文件,您可以将 .parse 调用替换为 .parseURL "somefile.xml"(它接受本地文件名和 URL)。
猜你喜欢
  • 1970-01-01
  • 2010-09-10
  • 2011-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-20
  • 2011-05-22
相关资源
最近更新 更多