0

私の調査から、XMLを解析し、必要に応じて値を公開するための関数をVBAで構築することができました。しかし、私にはわかりにくい価値が1つあります。

<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を返すことはできません。

どんなアイデアでも大歓迎です!

4

1 に答える 1

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ウォッチウィンドウは非常に役立ちます。幸運を!

于 2013-02-02T11:04:01.957 に答える