修改xml文件并保存后,更改为“to”

时间:2014-04-24 12:56:11

标签: xml vba encode

我必须创建一个宏来更改给定xml中的某些标记并再次保存。 但保存后,所有转义字符都会被更改,并且还会删除一些回车。

初始档案:

<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:o="urn:schemas-microsoft-com:office:office"
 xmlns:x="urn:schemas-microsoft-com:office:excel"
 xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:html="http://www.w3.org/TR/REC-html40">

...

<DataValidation xmlns="urn:schemas-microsoft-com:office:excel">
   <Range>R1C26</Range>
   <Type>List</Type>
   <CellRangeList/>
   <Value>&quot;Credit Limit&quot;</Value>
   <ErrorMessage>The header row should not be changed.</ErrorMessage>
   <ErrorTitle>Header Row</ErrorTitle>
</DataValidation>

保存后:

<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">

...

<DataValidation xmlns="urn:schemas-microsoft-com:office:excel">
    <Range>R1C26</Range>
    <Type>List</Type>
    <CellRangeList/>
    <Value>"Credit Limit"</Value>
    <ErrorMessage>The header row should not be changed.</ErrorMessage>
    <ErrorTitle>Header Row</ErrorTitle>
</DataValidation>

我的代码是这样的:

Dim xmlDoc As New MSXML2.DOMDocument60
xmlFile = outputFolder & "\" & f
xmlDoc.Load xmlFile
'Make changes here
xmlDoc.Save xmlFile

你能帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

最后,我将为用户提供一个工具来比较原始和最终的xml文件。 例如,XML Notepad或Altova DiffDog,因此他们只能看到文件之间的差异,而不是中断。

答案 1 :(得分:-1)

在您的“更改脚本”中使用HttpServerUtility.HtmlEncode

高于C# - 抱歉。

对于VBA,你可以使用类似的东西:

Function UrlEncode(strString) 'As String
Dim strUrlEncode
Dim lngPos

For lngPos = 1 To Len(strString)
strUrlEncode = strUrlEncode & "%" & Right("0" & Hex(Asc(Mid(strString, lngPos, 1))), 2)
Next
UrlEncode = strUrlEncode

End Function 

参考:http://vbact.blogspot.com/2010/01/url-encode-in-vba.html