xml - 为什么 getElementsByTagName 找不到元素?
问题描述
我是处理 XML 文档和 Microsoft DOM 的新手,如果我遗漏了一些明显的东西,我深表歉意。
我有一组 XML 格式的文档,最终我想以编程方式进行编辑。作为一个发现步骤,我试图打开一个并查看如何阅读其内容。
根据我在网上找到的示例,我在 Visual Studio 2019 中创建了一个控制台项目并编写了几行代码。
该文档包含元素“DataSource”的 2 个实例,但方法 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>
模块模块1
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
端模块
解决方案
我注意到的一个错误是您的 Path 中有一个错字"C:Temp\Report1.xml"
。
如果这不能解决错误,请尝试更改您正在创建和使用的类型。Object
"microsoft.XMLDOM"
更新代码:
Sub Main()
Dim ReportFilename As String
Dim xmlDoc As Object
Dim xmlSourceList As Object
ReportFilename = "C:\Temp\Report1.xml"
xmlDoc = CreateObject("microsoft.XMLDOM")
xmlDoc.async = False
xmlDoc.Load(ReportFilename)
xmlSourceList = xmlDoc.getElementsByTagName("DataSource")
MsgBox(xmlSourceList.length)
End Sub
希望这可以帮助。
推荐阅读
- react-native - 从抽屉导航器导航到特定选项卡
- arrays - 包含给定查询点的区间数
- python - 如何获取 Python 函数来计算数学运算?
- screen-scraping - 屏幕抓取物联网设备
- bash - 如何使用 Amazon 的 s3api 重命名文件?
- javascript - 当前元素数据属性中的访问循环索引 - VueJS
- ios - iOS Swift:是否可以创建自定义的应用内评分视图
- sqlite - 列出已加载的 sqlite3 扩展?
- java - OSX High Sierra 上的 Java 教程揭示了线程问题
- c# - C# 中的 Azure 托管服务标识以连接到 Azure SQL Server