我必须创建一个宏来更改给定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>"Credit Limit"</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
你能帮我解决这个问题吗?
答案 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