У меня есть указатель на один из <NODE> — IXMLDOMNodePtr, полученный каким-либо образом.
Прблема состоит в том — как по этому указателю определить какой это NODE — 1-й или 2-й ?
Т.е. мне нужно построить для него XPath вроде /MAIN/NODE[2] например.
Еще раз отмечу, что у меня есть только указатель IXMLDOMNodePtr на этот нод, никаких специальных
атрибутов у нода нет, его typedValue тоже не рассматриваются.
Здравствуйте, Stalker_DA, Вы писали:
S_D>У меня есть указатель на один из <NODE> — IXMLDOMNodePtr, полученный каким-либо образом.
S_D>Прблема состоит в том — как по этому указателю определить какой это NODE — 1-й или 2-й ? S_D>Т.е. мне нужно построить для него XPath вроде /MAIN/NODE[2] например.
S_D>Еще раз отмечу, что у меня есть только указатель IXMLDOMNodePtr на этот нод, никаких специальных S_D>атрибутов у нода нет, его typedValue тоже не рассматриваются.
А у нода разве нет метода selectSingleNode(string xpath)?
Если есть, то можно попробовать selectSingleNode("count(./preceding-sibling::*)") и получишь кол-во своих "старших братьев".
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, Stalker_DA, Вы писали:
S_D>>У меня есть указатель на один из <NODE> — IXMLDOMNodePtr, полученный каким-либо образом.
S_D>>Прблема состоит в том — как по этому указателю определить какой это NODE — 1-й или 2-й ? S_D>>Т.е. мне нужно построить для него XPath вроде /MAIN/NODE[2] например.
S_D>>Еще раз отмечу, что у меня есть только указатель IXMLDOMNodePtr на этот нод, никаких специальных S_D>>атрибутов у нода нет, его typedValue тоже не рассматриваются.
L>А у нода разве нет метода selectSingleNode(string xpath)?
L>Если есть, то можно попробовать selectSingleNode("count(./preceding-sibling::*)") и получишь кол-во своих "старших братьев".
Можно, только при этом я получу все вышестоящие (на одном уровне с моим) ноды. А мне нужно выбрать только те, baseName которых
совпадает с моим. Я понимаю что можно конечно сделать такую выборку и потом сравнивать имена ... такое решение у меня было с
самого начала, хотелось бы покрасивее.
Здравствуйте, Stalker_DA, Вы писали:
S_D>Можно, только при этом я получу все вышестоящие (на одном уровне с моим) ноды. А мне нужно выбрать только те, baseName которых S_D>совпадает с моим. Я понимаю что можно конечно сделать такую выборку и потом сравнивать имена ... такое решение у меня было с S_D>самого начала, хотелось бы покрасивее.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, Stalker_DA, Вы писали:
S_D>>Можно, только при этом я получу все вышестоящие (на одном уровне с моим) ноды. А мне нужно выбрать только те, baseName которых S_D>>совпадает с моим. Я понимаю что можно конечно сделать такую выборку и потом сравнивать имена ... такое решение у меня было с S_D>>самого начала, хотелось бы покрасивее.
L>Упс, извини, недосмотрел.
L>
L>count(./preceding-sibling::NODE)
L>
Спасибо, это подходит. Но вопрос все равно есть, а можно ли не указывать явно имя "NODE"? Т.е. сделать так
чтобы запрос был универсальным. Насколько я понимаю, нужно написать что нибудь вроде
(./preceding-sibling::*[name()= <а вот чему?> ]
Т.е. как получить baseName данного нода, от которого я начинаю поиск?
S_D>Спасибо, это подходит. Но вопрос все равно есть, а можно ли не указывать явно имя "NODE"? Т.е. сделать так S_D>чтобы запрос был универсальным. Насколько я понимаю, нужно написать что нибудь вроде
S_D>
S_D>(./preceding-sibling::*[name()= <а вот чему?> ]
S_D>
S_D>Т.е. как получить baseName данного нода, от которого я начинаю поиск?
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, Stalker_DA, Вы писали:
L>>>
L>>>count(./preceding-sibling::NODE)
L>>>
S_D>>Спасибо, это подходит. Но вопрос все равно есть, а можно ли не указывать явно имя "NODE"? Т.е. сделать так S_D>>чтобы запрос был универсальным. Насколько я понимаю, нужно написать что нибудь вроде
S_D>>
S_D>>(./preceding-sibling::*[name()= <а вот чему?> ]
S_D>>
S_D>>Т.е. как получить baseName данного нода, от которого я начинаю поиск?
L>А если так:
L>
L>./preceding-sibling::*[name()= name(.)]
L>
Нет — так не прокатывает, я так уже пробовал, это все равно что просто * указать — все предыдущие ноды этого уровня
возвращаются.
Здравствуйте, Stalker_DA, Вы писали:
S_D>Нет — так не прокатывает, я так уже пробовал, это все равно что просто * указать — все предыдущие ноды этого уровня S_D>возвращаются.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, Stalker_DA, Вы писали:
S_D>>Нет — так не прокатывает, я так уже пробовал, это все равно что просто * указать — все предыдущие ноды этого уровня S_D>>возвращаются.
L>Ну тады ой. Формируй строку xpath-а и вызывай.
Ну так и делаю, все работает вроде.
Ладно, наверное действительно не стоит на этом загоняться