Я новичок в обработке документов XML и DOM Microsoft, поэтому извиняюсь, если упускаю что-то очевидное.
У меня есть набор документов в формате XML, который в конечном итоге я хочу редактировать программно.В качестве шага открытия я пытаюсь открыть один и посмотреть, как читать его содержимое.
Следуя примерам, которые я нашел в Интернете, я создал консольный проект в Visual Studio 2019 и написал несколько строк.кода.
Документ содержит 2 экземпляра элемента «DataSource», но метод getElementsByTagName («DataSource»), похоже, не находит их.Действительно, какой бы тег я ни дал команде, длина массива элементов всегда возвращается как 0.
Что я делаю не так?
МОЙ XML выглядит так:
<?xml version="1.0" encoding="utf-8"?>
<Report MustUnderstand="df" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns:df="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition/defaultfontfamily">
<df:DefaultFontFamily>Segoe UI</df:DefaultFontFamily>
<AutoRefresh>0</AutoRefresh>
<DataSources>
<DataSource Name="SharedDataSource">
<DataSourceReference>QL_Copy</DataSourceReference>
<rd:SecurityType>None</rd:SecurityType>
<rd:DataSourceID>801777da-c111-4aa2-b8e9-49ba90f19774</rd:DataSourceID>
</DataSource>
<DataSource Name="CustomDataSource">
<ConnectionProperties>
<DataProvider>SQL</DataProvider>
<ConnectString>Data Source=v-citywsql03;Initial Catalog=BE</ConnectString>
<IntegratedSecurity>true</IntegratedSecurity>
</ConnectionProperties>
<rd:SecurityType>Integrated</rd:SecurityType>
<rd:DataSourceID>dcfb0e9c-06d9-4538-9ec6-1568b32daf3b</rd:DataSourceID>
</DataSource>
</DataSources>
<ReportSections>
<ReportSection>
<Body>
<Height>2in</Height>
<Style />
</Body>
<Width>6.5in</Width>
<Page>
<PageHeight>29.7cm</PageHeight>
<PageWidth>21cm</PageWidth>
<LeftMargin>2cm</LeftMargin>
<RightMargin>2cm</RightMargin>
<TopMargin>2cm</TopMargin>
<BottomMargin>2cm</BottomMargin>
<ColumnSpacing>0.13cm</ColumnSpacing>
<Style />
</Page>
</ReportSection>
</ReportSections>
<ReportParametersLayout>
<GridLayoutDefinition>
<NumberOfColumns>4</NumberOfColumns>
<NumberOfRows>2</NumberOfRows>
</GridLayoutDefinition>
</ReportParametersLayout>
<rd:ReportUnitType>Cm</rd:ReportUnitType>
<rd:ReportID>f3bca84a-9587-4ba2-b1ed-57e31a33eb3b</rd:ReportID>
</Report>
Модуль Module1
Sub Main()
Dim ReportFilename As String
Dim xmlDoc As Object
Dim xmlSourceList As Object
ReportFilename = "C:Temp\Report1.xml"
xmlDoc = CreateObject("MSXML2.DOMDocument.6.0")
xmlDoc.async = False
xmlDoc.Load(ReportFilename)
xmlSourceList = xmlDoc.getElementsByTagName("DataSource")
MsgBox(xmlSourceList.length)
End Sub
Конечный модуль