我正尝试在VB6中使用MSXML来创建一个XML文件,然后可以将该文件反序列化为C#中的对象。
我试图模拟的XML如下所示
<?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库创建以下代码行?
<?xml version="1.0" encoding="utf-8"?>IE:如何创建一个无终止的header值?
发布于 2011-03-23 08:54:54
看看这个similar question。
您需要使用MXXMLWriter60,而不是直接保存它。..。详情请参见IMXWriter。
发布于 2011-03-27 02:22:58
这里有很多关于UTF-8的争论,但是DOMDocument.save()方法确实使用PI来确定如何对保存的输出进行编码。唯一真正的问题是,对于格式化输出而不是经济输出(没有空格),您需要使用SAX Writer。
不过,基本上事情看起来和预期的一样。这一点也不奇怪,这就是它是怎么做的。
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方法的重量级选项。
发布于 2011-03-23 08:56:59
它被称为“声明”。
在XML编写器上,将属性omitXMLDeclaration设置为False,将encoding设置为"utf-8"。
https://stackoverflow.com/questions/5399661
复制相似问题