在 VBA 中从 XML 文档中获取信息
我正在使用 MSXML2 加载 XML 文件(来自 Google Analytics 的提要)。
我现在需要从中获取数据,但我不知道如何获取。
这是 XML:
<?xml version='1.0' encoding='utf-8'?>
<feed xmlns='http://www.w3.org/2005/Atom' xmlns:dxp='http://schemas.google.com/analytics/2009' xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='W/"dsdsdsdsdsdsdsd."' gd:kind='analytics#data'>
<id>http://www.google.com/analytics/feeds/data?ids=ga:2000000&dimensions=ga:campaign&metrics=ga:visits&filters=ga:campaign%3D%3Dcrosspromo&start-date=2010-08-26&end-date=2010-09-09</id>
<updated>2010-09-09T05:50:40.705-07:00</updated>
<title>Google Analytics Data for Profile 2000000</title>
<link rel='self' type='application/atom+xml' href='https://www.google.com/analytics/feeds/data?max-results=50&end-date=2010-09-09&start-date=2010-08-26&metrics=ga%3Avisits&ids=ga%3A2000000&dimensions=ga%3Acampaign&filters=ga%3Acampaign%3D%3Dcrosspromo' />
<author>
<name>Google Analytics</name>
</author>
<generator version='1.0'>Google Analytics</generator>
<openSearch:totalResults>1<
/openSearch:totalResults>
<openSearch:startIndex>1</openSearch:startIndex>
<openSearch:itemsPerPage>50</openSearch:itemsPerPage>
<dxp:aggregates>
<dxp:metric confidenceInterval='0.0' name='ga:visits' type='integer' value='5070' />
</dxp:aggregates>
<dxp:dataSource>
<dxp:property name='ga:profileId' value='2000000' />
<dxp:property name='ga:webPropertyId' value='UA-2000000-1' />
<dxp:property name='ga:accountName' value='test' />
<dxp:tableId>ga:2000000</dxp:tableId>
<dxp:tableName>test</dxp:tableName>
</dxp:dataSource>
<dxp:endDate>2010-09-09</dxp:endDate>
<dxp:startDate>2010-08-26</dxp:startDate>
<entry gd:etag='W/"CkMEQX47eSp7I2A9Wx5QGUQ."' gd:kind='analytics#datarow'>
<id>http://www.google.com/analytics/feeds/data?ids=ga:2000000&ga:campaign=crosspromo&filters=ga:campaign%3D%3Dcrosspromo&start-date=2010-08-26&end-date=2010-09-09</id>
<updated>2010-09-08T17:00:00.001-07:00</updated>
<title>ga:campaign=crosspromo</title>
<link rel='alternate' type='text/html' href='http://www.google.com/analytics' />
<dxp:dimension name='ga:campaign' value='crosspromo' />
<dxp:metric confidenceInterval='0.0' name='ga:visits' type='integer' value='5070' />
</entry></openSearch:totalResults>
</feed>
然后我加载 XML 并搜索“entry”标签:
Dim objXML As MSXML2.DOMDocument
Set objXML = New MSXML2.DOMDocument
objXML.loadXML strXML
Debug.Print objXML.getElementsByTagName("entry").Item(0).Text
但这输出:
http://www.google.com/analytics/feeds/data?ids=ga:20000000&ga:campaign=crosspromo&filters=ga:campaign%3D%3Dcrosspromo&start-date=2010-08-26&end-date=2010-09-092010-09-08T17:00:00.001-07:00ga:campaign=crosspromo
其余数据在哪里? 如果我尝试第(1)项,它会失败......
I'm using MSXML2 to load an XML file (a feed from Google Analytics).
I now need to get data out of it, but I can't figure out how.
This is the XML:
<?xml version='1.0' encoding='utf-8'?>
<feed xmlns='http://www.w3.org/2005/Atom' xmlns:dxp='http://schemas.google.com/analytics/2009' xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/' xmlns:gd='http://schemas.google.com/g/2005' gd:etag='W/"dsdsdsdsdsdsdsd."' gd:kind='analytics#data'>
<id>http://www.google.com/analytics/feeds/data?ids=ga:2000000&dimensions=ga:campaign&metrics=ga:visits&filters=ga:campaign%3D%3Dcrosspromo&start-date=2010-08-26&end-date=2010-09-09</id>
<updated>2010-09-09T05:50:40.705-07:00</updated>
<title>Google Analytics Data for Profile 2000000</title>
<link rel='self' type='application/atom+xml' href='https://www.google.com/analytics/feeds/data?max-results=50&end-date=2010-09-09&start-date=2010-08-26&metrics=ga%3Avisits&ids=ga%3A2000000&dimensions=ga%3Acampaign&filters=ga%3Acampaign%3D%3Dcrosspromo' />
<author>
<name>Google Analytics</name>
</author>
<generator version='1.0'>Google Analytics</generator>
<openSearch:totalResults>1<
/openSearch:totalResults>
<openSearch:startIndex>1</openSearch:startIndex>
<openSearch:itemsPerPage>50</openSearch:itemsPerPage>
<dxp:aggregates>
<dxp:metric confidenceInterval='0.0' name='ga:visits' type='integer' value='5070' />
</dxp:aggregates>
<dxp:dataSource>
<dxp:property name='ga:profileId' value='2000000' />
<dxp:property name='ga:webPropertyId' value='UA-2000000-1' />
<dxp:property name='ga:accountName' value='test' />
<dxp:tableId>ga:2000000</dxp:tableId>
<dxp:tableName>test</dxp:tableName>
</dxp:dataSource>
<dxp:endDate>2010-09-09</dxp:endDate>
<dxp:startDate>2010-08-26</dxp:startDate>
<entry gd:etag='W/"CkMEQX47eSp7I2A9Wx5QGUQ."' gd:kind='analytics#datarow'>
<id>http://www.google.com/analytics/feeds/data?ids=ga:2000000&ga:campaign=crosspromo&filters=ga:campaign%3D%3Dcrosspromo&start-date=2010-08-26&end-date=2010-09-09</id>
<updated>2010-09-08T17:00:00.001-07:00</updated>
<title>ga:campaign=crosspromo</title>
<link rel='alternate' type='text/html' href='http://www.google.com/analytics' />
<dxp:dimension name='ga:campaign' value='crosspromo' />
<dxp:metric confidenceInterval='0.0' name='ga:visits' type='integer' value='5070' />
</entry></openSearch:totalResults>
</feed>
Then I load the XML and search for the "entry" tag:
Dim objXML As MSXML2.DOMDocument
Set objXML = New MSXML2.DOMDocument
objXML.loadXML strXML
Debug.Print objXML.getElementsByTagName("entry").Item(0).Text
But this outputs:
http://www.google.com/analytics/feeds/data?ids=ga:20000000&ga:campaign=crosspromo&filters=ga:campaign%3D%3Dcrosspromo&start-date=2010-08-26&end-date=2010-09-092010-09-08T17:00:00.001-07:00ga:campaign=crosspromo
Where's the rest of the data?
If I try item(1) it fails...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
那么 Item(1) 会失败,因为只有一个“entry”元素,且该元素位于 0。.Text
属性返回元素及其所有子元素的所有 Text 内容。如果你仔细观察,这就是你所拥有的。
如果您想要其他东西,则必须使用 Item(0) 之外的适当方法。
查看这个问题(如何在 VBA 中解析 XML)。
Well Item(1) fails because there is only one "entry" element, and that's at 0.
The .Text property returns all the Text content of the element and all its children. If you look closely, that's what you've got.
If you want something else, you'll have to use the appropriate method off the Item(0).
Check out this question (How to parse XML in VBA).
尝试:
Try:
您已收到您要求的所有信息。您获得了
中每个元素的文本,让我们将其分解(这是您的输出):
第一组文本:
第二组文本:
第三组文本:
输出条目中没有其他内容。因此你看不到任何其他东西。
You have received all the information you asked for. You got the text of each element within the
<entry></entry>
lets break it down (this was your output):
First set of text:
Second Set of text:
Third set of text:
There was nothing else in the entry with output. Therefore you do not see anything else.