0
public ParseEvents()
{       
    String classpathLocation_plm = "com/esper/Resources/dataPkt.xsd";
    String classpathLocation_status = "com/esper/Resources/helloPkt.xsd";
    URL schemaURL_plm = this.getClass().getClassLoader().getResource(classpathLocation_plm);
    URL schemaURL_status = this.getClass().getClassLoader().getResource(classpathLocation_status);
    //System.out.println(schemaURL.getPath());
    ConfigurationEventTypeXMLDOM plmcfg = new ConfigurationEventTypeXMLDOM();
    ConfigurationEventTypeXMLDOM plmstatus = new ConfigurationEventTypeXMLDOM();
    epService = EPServiceProviderManager.getDefaultProvider();
    epService1 = EPServiceProviderManager.getDefaultProvider();
    plmcfg.setRootElementName("PACKET");
    plmcfg.setSchemaResource(schemaURL_plm.toString());
    plmstatus.setRootElementName("PACKET");
    plmstatus.setSchemaResource(schemaURL_status.toString());
    plmAdm = epService.getEPAdministrator();
    plmAdm1 = epService1.getEPAdministrator();
    plmAdm.getConfiguration().addEventType("PlmEvent", plmcfg);  
    plmAdm1.getConfiguration().addEventType("PlmStatus", plmstatus);

Java プロジェクトのクラスパスに 2 つのスキーマがあります。現在、esper エンジンに送られる xml ファイル (イベントとして) は、理解すべきスキーマを理解していません。この問題はどのように解決できますか? 専門家が提案してください!

4

2 に答える 2

0

解決策をありがとう。私は別の方法を試しました。xml イベントの送信後、DOM パーサーによって xml が解析された後にドキュメントが作成され、このドキュメントがイベントとして Esper エンジンに送信されます。タグ名を確認してから、xml イベントがそれぞれのスキーマに問い合わせています。

doc = builderFactory.newDocumentBuilder().parse(source);
            doc.getDocumentElement().normalize();           
            if((doc.getElementsByTagName("PSTATUS").getLength() != 0))
            {
                System.out.println("*** In Status packet ***");
                EPStatement cepStatement3 = plmAdm1.createEPL("select * from " + "PlmStatus"); 
                cepStatement3.addListener(new CEPListener2());
            }
            else
            {
                System.out.println("*** In Energy packet ***");

            }
于 2013-01-23T12:27:01.650 に答える
0

すべての XML イベントのルート要素名が同じ場合は、EventSender を使用して、送信されるイベントのタイプを識別します。 ("PlmStatus")

「select * from PlmEvent」のようないくつかの EPL ステートメントを作成し、「s1.sendEvent(xmldoc)」経由でイベントを送信します。

于 2013-01-18T12:27:10.430 に答える