xmlドキュメントの詳細を表示してナビゲートしたい。 しかし、名前空間を持っています。この名前空間がMultiblock
であるため、lists.length
をゼロにしています(下記のvbaコードを参照してください)VBAを使用して名前空間が存在する場合のXMLノード値の取得
ご案内しています。読んでいただきありがとうございます。 :) 私のXML文書は次のとおりです。
<?xml version="1.0" encoding="UTF-16"?>
<MultiBlock xmlns="x-schema:ConfigFileSchema.xml">
<ErdbVersion>
<DbVersion>14.0</DbVersion>
<DbDesc>ERDB Release EXP431.1-49.0</DbDesc>
<DbGUID>56CFAF87-53A9-4042-8B4F-4CF94868416E</DbGUID>
<DbLangID>ENU</DbLangID>
</ErdbVersion>
<Block>
<BlockDef>
<BlockName>J60AOV1136</BlockName>
<EntityName>J60AOV1136</EntityName>
<BlockId>20031267</BlockId>
<BlockGUID>D11BF0DB-803D-49FC-A594-D234ABD1E156
</BlockGUID>
<BlockDesc>Exported on (MM-DD-YY HH:MM) 07-31- 2017
10:12</BlockDesc>
<TemplateName>SYSTEM:CONTROLMODULE</TemplateName>
<ClassName>CONTROLMODULE</ClassName>
<BaseTemplateName>SYSTEM:CONTROLMODULE
</BaseTemplateName>
<CreateType> </CreateType>
<Attribute>1610613248</Attribute>
<LifeCycleState>Loaded</LifeCycleState>
<AssignedTo>STFCEE8A_03</AssignedTo>
<Container></Container>
</BlockDef>
<Parameters>
<Parameter>
<ParamName>ALIASOPT</ParamName>
<ParamValue>OFF</ParamValue>
</Parameter>
<Parameter>
<ParamName>DISCOVORDER</ParamName>
<ParamValue>"TPN"</ParamValue>
</Parameter>
<Parameter>
<ParamName>METHODSCOPE</ParamName>
<ParamValue>"ALL"</ParamValue>
</Parameter>
</Parameters
</Block
</MultiBlock>
私はxmlns="x-schema:ConfigFileSchema.xml"
せずにノードの詳細情報を取得しようとしていたとき、私は、ノードをナビゲートし、値を取得することができています。
同じ文書とxmlns
属性では、ナビゲートに問題があります。ここで
は私のVBAコードは次のとおりです。
Sub AOVXML()
Dim XDoc As MSXML2.DOMDocument
Dim firstNamefield As MSXML2.IXMLDOMNodeList
Dim lists As MSXML2.IXMLDOMNodeList
Dim i, j As Integer
'Dim lists As MSXML2.IXMLDOMNode
Set XDoc = CreateObject("MSXML2.DOMDocument")
XDoc.async = False: XDoc.validateOnParse = False
XDoc.Load (ThisWorkbook.Path & "\J60AOV1136.cnf.xml")
'Reading the List Node
Set lists = XDoc.SelectNodes("//MultiBlock/Block")
MsgBox "Length of Lists nodes : " & lists.Length & vbCrLf & _
"First XML List Node : "
'Getting First Child node under Lists
Set firstNamefield = lists(0).ChildNodes
MsgBox firstNamefield.Length
'Looping through all XML nodes under List node
For i = 0 To firstNamefield.Length - 1
MsgBox firstNamefield(i).XML
Next i
Set XDoc = Nothing
End Sub
多分NS'はそれは長い時間以来をされている 'で終わる名前空間でのアクションを(実行するMSXML内の別々の方法があります?私はMSXMLを最後に使用しました。)。 MSXMLドキュメントのコピーを見つけることは、エクササイズとして残ります。 – Richard
https://stackoverflow.com/questions/45404020/xpath-syntax-to-select-nodes-with-multiple-attributes-in-the-path/ 45404432#45404432 –
こんにちは@TimWilliams、ありがとう、私はリンクを使用し、私のXML文書の書き込みを試みた。しかし、私は値を意図していません。ここに私のコードです: 'XDoc.setProperty" SelectionLanguage "、" XPath " 'デフォルトの名前空間を設定し、接頭辞(例:" xx ")を付けてください。 XDoc.setProperty" SelectionNamespaces "、_ " xmlns:xx =' x -schema:ConfigFileSchema.xml '" 'リストノードを読み取る リストを設定する= XDoc.SelectNodes(" // xx:MultiBlock/xx:Block ")' –