построитель выражений для XML - PullRequest
0 голосов
/ 30 июня 2010

В моей программе мне передают XML.Если значения в этом XML соответствуют заданным пользователем критериям, я сохраняю xml, в противном случае он отбрасывается.Проблема, с которой я столкнулся, заключается в том, что мне нужно позволить пользователю определить критерии (также объединяя несколько элементов с «ИЛИ» и «И»), а затем применить это при получении XML.Это приложение на C #, кто-нибудь может порекомендовать библиотеку, инструмент или помощь, каким образом мне следует решить эту проблему?Ниже показан XML, который я получу.Пользователь может захотеть сохранить это, только если <unit> =1 AND (первая часть <data> = Z OR <data> имеет ABC после второй комы).

<interface>
  <mac>12345</mac>
  <device>DeviceTypeA</device>
  <id>TestUnit</id>
  <data>
    <unit>1</unit>
    <transaction>
      <event>0</event>
      <data>Z,0,ABC,1234</data>
      <time>2010-06-29T11:33:44.0000000Z</time>
    </transaction >
  </data>
</interface>

1 Ответ

0 голосов
/ 30 июня 2010

Ваши пользователи вообще видят XML? Если это так, вы можете просто позволить пользователю ввести выражение XPath, такое как

/interface/data/unit=1

или

substring-before(',',/interface/data/transaction/data)='Z'

тогда просто сделайте

if (xml.SelectNodes(xPathExpression) == null) /*discard*/

ИМХО всем, кто работает с XML, следует поощрять изучение XPath; Вы можете привести несколько простых примеров рядом с вводом, чтобы помочь.

Если ваши пользователи не видят XML, вам, вероятно, лучше иметь несколько предопределенных условий, из которых пользователь может выбрать, а затем указать значение, в противном случае вам придется создать анализатор всего выражения, что, вероятно, излишне для такой задачи.

...