<osgb:topographicMember>
<osgb:TopographicArea fid='osgb1000000347753568'>
<osgb:featureCode>10053</osgb:featureCode>
<osgb:version>4</osgb:version>
<osgb:versionDate>2006-03-15</osgb:versionDate>
<osgb:theme>Land</osgb:theme>
<osgb:calculatedAreaValue>46.099150</osgb:calculatedAreaValue>
<osgb:changeHistory>
<osgb:changeDate>2001-03-09</osgb:changeDate>
<osgb:reasonForChange>New</osgb:reasonForChange>
</osgb:changeHistory>
<osgb:descriptiveGroup>General Surface</osgb:descriptiveGroup>
<osgb:descriptiveTerm>Multi Surface</osgb:descriptiveTerm>
<osgb:make>Multiple</osgb:make>
<osgb:physicalLevel>50</osgb:physicalLevel>
<osgb:polygon><gml:Polygon srsName='osgb:BNG'>
<gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>290996.130,92420.290 290998.010,92415.010 291000.000,92415.720 291005.770,92417.770 291003.890,92423.040 291000.000,92421.660 290996.130,92420.290 </gml:coordinates>
</gml:LinearRing>
</gml:outerBoundaryIs>
</gml:Polygon>
</osgb:polygon></osgb:TopographicArea>
</osgb:topographicMember>
我想获得的价值是fid ='osgb10000000347753568'
我可以获取并返回TopographicArea(使用xChild.baseName),但不是fid。
欢迎任何想法!
答案 0 :(得分:0)
如果我正确理解输入,您需要打开TopographicArea
节点并获取其Fid
属性.text
或.NodeValue
属性(取决于节点数据,哪个最适合)类型)而不是节点.baseName
,即你应该使用这样的东西:
Set XMLDOC = CreateObject("MSXML2.DOMDocument")
.....
Set SubNode = XMLDOC.SelectNodes("//[list of parent nodes]/topographicMember/TopographicArea/")
fid = SubNode.Attributes.Item(0).NodeValue
也许我的符号错了,但关键是你应该使用.text
或.NodeValue
属性。添加了XMLDOC的VBA Watch Window非常有用。祝你好运!