当字符串值中有斜线符号时如何使用 OmniXML 在 XML 中搜索

How to search in XML with OmniXML when you have a slash sign inside string value

我正在使用 Delphi7、OmniXML。

在我的 xml 中,我有一个包含“/”的字段

XML:

...
<R2>002-000004/13</R2>
...

当我在 XML 中搜索包含符号“/”的值时 我的 OmniXml returns 错误。

iNodeKupac := FXMLDocument.SelectSingleNode(
          '//[R2=''' + '002-000004/13' + ''']'
          );

如何对该字段进行搜索?

更改了 OmniXMLPath 单元中的 PosEX,现在可以使用了。

function TXMLXPathEvaluator.PosEx(ch: WideChar; const s: XmlString; offset: integer = 1): integer;
var
  quoteCount, startIndex, stopIndex: integer;
  startText, stopText : String;
begin
  quoteCount := 0;
  startText := ''; startIndex := 0;
  stopText := ''; stopIndex := 0;
  for Result := offset to Length(s) do begin
    if (s[Result] = '=') and (startText = '') then begin
      startText := '=';
      startIndex := Result;
      end
    else if (s[Result] = '''') and (startText = '=') and ((startIndex+1) = Result) then begin
      startText := '=''';
      startIndex := -1;
      end
    else begin
      startText := '';
      startIndex := 0;
    end;

    if (s[Result] = '''') and (stopText = '') then begin
      stopText := '''';
      stopIndex := Result;
      end
    else if (s[Result] = ']') and (stopText = '''') and ((stopIndex+1) = Result) then begin
      stopText := ''']';
      stopIndex := -1;
      end
    else begin
      stopText := '';
      stopIndex := 0;
    end;

    if startIndex = -1 then Inc(quoteCount);
    if stopIndex = -1 then Dec(quoteCount);

    if (s[Result] = ch) and (quoteCount = 0) then
      Exit;
  end;
  Result := 0;
end; { TXMLXPathEvaluator.PosEx }