Real Studio: поиск позиции результатов XQL в оригинальном XmlDocument - PullRequest
0 голосов
/ 11 марта 2012

У меня есть следующий XML (хранится в XmlDocument):

<root>
  <row>
    <elem>Timestamp</elem>
    <elem>ERB.CHW.BTU_CV</elem>
    <elem>ERB.CHW.BTU1_CV</elem>
    <elem>ERB.HW.BTU_CV</elem>
    <elem>ERB.HW.BTU1_CV</elem>
    <elem>ERB.KW.DEMAND_CV</elem>
    <elem>ERB.KWH.MT_CV</elem>
    <elem></elem>
  </row>
  <row>
    <elem>2011/09/30 11:21:13.9062</elem>
    <elem>2.307609E+09</elem>
    <elem>1880067</elem>
    <elem>1.068635E+08</elem>
    <elem>1340.386</elem>
    <elem>448.8</elem>
    <elem>1427723</elem>
    <elem></elem>
  </row>
</root>

Я работаю с этим запросом:

Dim results As XmlNodeSet = myDoc.xql("/*/row[1]/elem[normalize-space()]")

... который возвращает мне XmlNodeSet, что я ожидаю:

<elem>Timestamp</elem>
<elem>ERB.CHW.BTU_CV</elem>
<elem>ERB.CHW.BTU1_CV</elem>
<elem>ERB.HW.BTU_CV</elem>
<elem>ERB.HW.BTU1_CV</elem>
<elem>ERB.KW.DEMAND_CV</elem>
<elem>ERB.KWH.MT_CV</elem>

Тем не менее, я хотел бы знать , где в исходном XML происходит этот XmlNodeSet (так что я могу использовать функцию подсветки - которая берет начальную точку и длину, оба целых числа), чтобы выделить эти результаты в оригинальном документе).

Из того, что я могу сказать, нет очевидного способа сравнить мой результат NodeSet с исходным XmlDocument (и каким-то образом получить положение этих элементов в этом исходном документе). Я экспериментировал с некоторыми идеями и до сих пор могу думать только о следующем ужасном процессе:

  1. Запустите XSLT для исходного документа - используя мой оригинальный XPath - который помещает постороннюю разметку в исходный документ (например, <elem highlight="true">ERB.KWH.MT_CV</elem>).
  2. Использование регулярных выражений в RS для определения расположения элементы, содержащие эту разметку.
  3. Вывести версию документа, в которой (а) удалена разметка, и (б) выделяет текст в этих позициях.

Тьфу. Кто-нибудь может придумать лучший способ?

1 Ответ

0 голосов
/ 25 июня 2014

См. Исходный код XPath Visualizer - вы можете скачать его по адресу:

http://www.huttar.net/dimitre/XPV/TopXML-XPV.html

Соответствующий код находится в таблице стилей XSLT.

Ссылки

...