次のようなタブ付きの情報を含むプレーンテキストファイルがあります
ADVMONITOR "WINOSSPI-RPCService-Win2k"
DESCRIPTION "Checks the 'Remote Procedure Call (RPC)' Windows 2000 service and its corresponding process"
INTERVAL "5m2s"
SCRIPTTYPE "VBScript"
MULTISOURCE
INSTANCEMODE ONCE
MAXTHRESHOLD
SEPARATORS " "
ICASE
PROGRAM "Process"
DESCRIPTION "Returns the number of running 'svchost.exe' processes;"
MONPROG "opcntprocs.exe WINOSSPI-RPCService-Win2k-Process svchost"
PROGRAM "Service"
DESCRIPTION "Returns values that correspond to different states of the service 'RPC Service'"
MONPROG "opcntservice_chk.bat RpcSs WINOSSPI-RPCService-Win2k-Service"
MSGCONDITIONS
INSTANCERULE "Combined Service and Process Monitor; suppress messages caused by same case;"
ID "d5ca6823-37d4-4581-886a-2aad3462d9e0"
DESCRIPTION "Checks the services and processes"
CONDITION_ID "0cdb88dd-0338-47d3-a5f5-e4d982e8a1a9"
CONDITION
そして、私が必要とするのは、そのような情報をデータベースにインポートできる方法で各ブロックから情報を取得することですが、さまざまなブロックをうまく繰り返して、各ブロックから適切なデータを取得し、識別可能にすることはできません方法。
という名前のクラスを使用して、タブごとにブロックを識別しようとしましたtabbedLinesTree
。これにより、すべてのタブ付きテキストが XML に変換されます。これも便利ですが、さまざまなフィールドがフィールド名またはどのブロックを識別する他の方法で表示されません。終えた。
再開しています...そのファイルを調べて、(例として)各ブロックの名前、およびそのPROGRAM
ブロックの の配列を取得したいと思います...PROGRAM
DESCRIPTION
MONPROG
これをどのように概念化すればよいかわからないので、何かアイデアがあれば教えてください。
私は PHP が得意ですが、必要に応じて他のソリューションを実装できます。
Ps: 一部のブロックには、より多くのタブまたはより多くのフィールド (行) を含めることができます。
---ナイジェルの回答の後に追加された以下のテキスト---
2 番目のテキストの例...
SYNTAX_VERSION 5
LOGFILE "OvSvcDiscErrorLog"
DESCRIPTION "Self-Management OvService Discovery agent error log"
LOGPATH "<OvSvcDiscErrorLog>"
INTERVAL "5m"
CHSET ASCII
FROM_LAST_POS
NO_LOGFILE_MSG
CLOSE_AFTER_READ
SEPARATORS " "
MSGCONDITIONS
DESCRIPTION "[E01-001] EXCEPTION while installing policy"
SUPP_DUPL_IDENT "3m"
COUNTER_THRESHOLD 0
CONDITION_ID "17adc1d1-32cf-42ca-be5f-1cf784f19026"
CONDITION
TEXT "<*> \\[E01-001\\] EXCEPTION while installing policy <*.polname>" SEPARATORS " "
SET
SEVERITY Critical
APPLICATION "OVO/Win"
MSGGRP "OVO"
OBJECT "OvSvcDiscAgent"
TEXT "[E01-001]EXCEPTION while installing policy "`