У меня есть файл XML, который выглядит так:
<xc:XmlCache xmlns:xc="XmlCache" xmlns:mp="mx.MarketParameters" xmlns:rt="mx.MarketParameters.Rates" xmlns:rtcu="mx.MarketParameters.Rates.Curve">
<xc:XmlCacheArea xc:value="MarketParameters">
<mp:nickName xc:value="MDS" xmlns:mp="mx.MarketParameters">
<mp:date xc:value="20160518">
<rt:rate xmlns:rt="mx.MarketParameters.Rates">
<rtcu:curve xmlns:rtcu="mx.MarketParameters.Rates.Curve">
<rtcu:currency xc:value="AED">
<rtcu:label xc:value="AED FX">
<rtcu:type xc:value="Swap point">
<rtcu:generator xc:value="USD/AED">
<rtcu:market xc:value="">
<rtcu:maturity xc:value="10M" xc:dates="20160523-20170323" xc:type="Fields">
Я хотел бы получить список узлов типа rtcu:maturity
в VBA для выполнения некоторых операций:
Dim xmlCurvesFileDOMDocument As New DOMDocument60
Dim listOfMaturities As IXMLDOMNodeList
xmlCurvesFileDOMDocument.Load (xmlCurvesFilePath)
Set listOfMaturities = xmlCurvesFileDOMDocument.SelectNodes("//xc:XmlCache/xc:XmlCacheArea/mp:nickName/mp:date/rt:rate/rtcu:curve/rtcu:currency/rtcu:label/rtcu:type/rtcu:generator/rtcu:market/rtcu:maturity")
(примечание: я опускаю xmlCurvesFilePath
, но это правильно, файл загружается).
Когда я запускаю это, на наборе listOfMaturities
я получаю ошибку типа Reference to undeclared namespace prefix: 'xc'
. Если я уберу xc
из пути, он скажет мне, что проблема в другом (mp
). Если я удалю все пространства имен из XPath, это сработает, но ничего не загрузит.
Я пытался найти переполнение стека, и кажется, что решением будет установка пространств имени выбора (например, здесь и здесь).
Однако, когда я пытаюсь это сделать:
xmlCurvesFileDOMDocument.setProperty("SelectionNamespaces", "xmlns:xc='XmlCache'")
... Я получаю сообщение об ошибке компиляции "Expected : =
".
Кто-нибудь знает, как я могу объявить свои пространства имен и проанализировать этот файл XML?
xmlCurvesFileDOMDocument.setProperty "SelectionNamespaces", "xmlns:xc='XmlCache'"
- person Fratyx   schedule 23.02.2018