首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MSXML创建XML "header“

MSXML创建XML "header“
EN

Stack Overflow用户
提问于 2011-03-23 08:51:40
回答 4查看 4.1K关注 0票数 3

我正尝试在VB6中使用MSXML来创建一个XML文件,然后可以将该文件反序列化为C#中的对象。

我试图模拟的XML如下所示

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfStock xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Stock>
    <ProductCode>12345</ProductCode>
    <ProductPrice>10.32</ProductPrice>
  </Stock>
  <Stock>
    <ProductCode>45632</ProductCode>
    <ProductPrice>5.43</ProductPrice>
  </Stock>
</ArrayOfStock>

我的问题是如何使用MSXML库创建以下代码行?

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>

IE:如何创建一个无终止的header值?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-23 08:54:54

看看这个similar question

您需要使用MXXMLWriter60,而不是直接保存它。..。详情请参见IMXWriter

票数 3
EN

Stack Overflow用户

发布于 2011-03-27 02:22:58

这里有很多关于UTF-8的争论,但是DOMDocument.save()方法确实使用PI来确定如何对保存的输出进行编码。唯一真正的问题是,对于格式化输出而不是经济输出(没有空格),您需要使用SAX Writer。

不过,基本上事情看起来和预期的一样。这一点也不奇怪,这就是它是怎么做的。

代码语言:javascript
复制
Option Explicit

Private Sub Main()
    Dim varStock As Variant
    Dim docStock As MSXML2.DOMDocument
    Dim elemRoot As MSXML2.IXMLDOMElement
    Dim elemStock As MSXML2.IXMLDOMElement
    Dim elemField As MSXML2.IXMLDOMElement
    Dim I As Integer
    
    varStock = Array(Array("12345", 10.32), _
                     Array("¥45632", 5.43)) 'Yen sign used here to show Unicode.
    
    Set docStock = New MSXML2.DOMDocument
    With docStock
        .appendChild .createProcessingInstruction("xml", _
                                                  "version=""1.0"" encoding=""utf-8""")
        Set elemRoot = .createElement("ArrayOfStock")
        With elemRoot
            .setAttribute "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"
            .setAttribute "xmlns:xsd", "http://www.w3.org/2001/XMLSchema"
            For I = 0 To UBound(varStock)
                Set elemStock = docStock.createElement("Stock")
                With elemStock
                    Set elemField = docStock.createElement("ProductCode")
                    elemField.Text = CStr(varStock(I)(0))
                    .appendChild elemField
                    Set elemField = docStock.createElement("ProductPrice")
                    elemField.Text = CStr(varStock(I)(1))
                    .appendChild elemField
                End With
                .appendChild elemStock
            Next
        End With
        Set .documentElement = elemRoot
        On Error Resume Next
        Kill "created.xml"
        On Error GoTo 0
        .save "created.xml"
    End With
End Sub

检查查找日元符号的输出文件时,您应该会看到文本是UTF-8编码的。

如果你想把它放到内存中而不是磁盘中,你可以使用.save()到一个类似于ADODB.Stream对象的东西上,或者只使用XMLHTTPRequest.send并把DOMDocument作为参数(body)。没有必要求助于Interop方法的重量级选项。

票数 3
EN

Stack Overflow用户

发布于 2011-03-23 08:56:59

它被称为“声明”。

在XML编写器上,将属性omitXMLDeclaration设置为False,将encoding设置为"utf-8"

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5399661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档