2

アプリケーションは、私のスクリプトを次のようなストリームに送信しています:

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <aRootChildNode>
    <anotherChildNode>
     <?xml version="1.0">
     <TheNodeImLookingFor>
       ... content ...
     </TheNodeImLookingFor>
    </anotherChildNode>
   </aRootChildNode>
</root>

TheNodeImLookingForセクションを抽出したい。これまでのところ、得た:

data = string.match(Stream, "^.+\<TheNodeImLookingFor\>.+\<\/TheNodeImLookingFor\>.+$")

パターンはストリームで認識されますが、ノードとそのコンテンツは抽出されません。

4

1 に答える 1

3

一般に、パターン マッチング (Lua パターンまたは正規表現) を使用して XML を抽出することはお勧めできません。XML パーサーを使用します。

この問題については、エスケープする必要はありません (エスケープする\場合<でも、Lua のパターンでは%魔法の文字をエスケープするために使用されます)。ノードとそのコンテンツを取得するには、ブラケットを使用します。

data = string.match(Stream, "^.+(<TheNodeImLookingFor>.+</TheNodeImLookingFor>).+$")

または、コンテンツのみを取得するには:

data = string.match(Stream, "^.+<TheNodeImLookingFor>(.+)</TheNodeImLookingFor>.+$")
于 2014-05-09T07:37:25.027 に答える