2009-10-20 113 views
3

我有一個XML文件,需要使用PHP進行解析並將解析的數據發送給Java,那麼有什麼最佳實踐可以實現?將數據從PHP傳輸到Java

+0

是否有非常有限的選項來做到這一點? – Rachel 2009-10-20 21:20:48

+0

我必須使用PHP解析包含決策規則的傳入XML,並且使用Java中的JRules API將此決策規則傳遞給ILOG JRules引擎,希望能夠澄清問題。 – Rachel 2009-10-22 19:32:43

+2

您的Java應用程序是否位於XML所在的同一臺機器上?你能直接從Java應用程序讀取XML嗎? – Adrian 2009-10-23 13:46:56

回答

4

這是一個像SOAP這樣的網絡服務的案例研究。

+0

SOAP不是一項W​​eb服務。 – moxn 2009-10-26 10:03:28

+5

「最初定義爲簡單對象訪問協議的SOAP是用於在計算機網絡中實現** Web服務**時交換結構化信息的協議規範。」這是規範......我想每個人都可以在我給出的鏈接中的第一句話中劃出句號。 – 2009-10-26 15:23:03

+1

他是對的,它不是一個Web服務。這是一個協議規範。它旨在用於Web服務,但它不是一項W​​eb服務。 – defines 2009-10-28 18:02:59

2

我想這可能有助於更多地瞭解你想要做什麼的前提以及你的侷限性。

你只編寫PHP端並將數據發送到已經創建的Java應用程序嗎?或者你在做雙方?你可以使用哪種協議來與Java接口?

// - >後澄清//

我沒有ILOG引擎的很多知識,但是我看了一下API來種得到的,我將開始一個想法。

顯然我不知道如何爲你設置一切,但似乎ILOG有一個用於處理已經內置到其中的XML的API?

http://ilog.cn/products/jrules/documentation/jrules67/api/html/index.html

個人而言,我會進行必要的修改,以XML文件,並把它關到Java程序採取使用該API的照顧。

對不起,如果我走錯了方向!

+0

感謝您爲BrandonCS所做的努力。 – Rachel 2009-10-22 21:04:00

+0

爲什麼不使用java api解析規則? – elhoim 2009-10-28 13:10:40

0

有一個PHP/Java橋實現:http://php-java-bridge.sourceforge.net/pjb/我以前的公司用它曾在一個項目,據我所知它的工作,但我沒有參與該項目,所以我不能告訴你任何問題。

如果這不是一個選項,通過SOAP或更「輕量級」交換格式的Web服務將是我猜的最佳選擇。

0

爲什麼你必須使用PHP解析這個文件?將這個代碼移植到Java中是不可能的? PHP代碼返回什麼?如何輕鬆地被Java讀取(或者這是整個問題的一部分?)

正如我所看到的,您有以下選擇:重寫Java中的邏輯,一個Web服務(SOAP,REST有什麼) ,PHP/Java bridgePHP scripting engine in Java

+0

你說得對,Java如何輕鬆準備就是整體問題。我必須使用PHP解析XML,而不需要將數據解析爲Java。 – Rachel 2009-10-23 15:06:14

+0

爲什麼你必須/解析PHP中的數據? 數據看起來像從PHP進程出來還是尚未確定呢?如果不是,除了「解析」數據之外,PHP過程還在做什麼?在這種情況下解析是什麼意思? – 2009-10-23 15:55:23

+0

這是一個解析XML文件的簡單例子,我們可以在解析數據需要進入mysql數據庫並使決策表需要轉到JRules引擎後使用perl或php。如前所述,PHP過程中出現的數據應該是數據和決策表,php需要將數據存儲到mysql數據庫並將決策規則傳遞給JRules引擎。解析=什麼解析意味着在「解析XML文件」 – Rachel 2009-10-23 20:13:09

1

「解析」是什麼意思?究竟是PHP代碼在做什麼?

您可以使用諸如SOAP或XMLRPC或Thrift或Protobuf之類的語言來讓兩種語言彼此交談,但只需讓PHP代碼加載XML並簡單地將其逐字節發送給Java程序通過HTTP或其他。 Java代碼然後可以執行解析工作,這可能就像將XML數據傳遞到正在使用的庫一樣簡單。

+0

PHP代碼正在對XML文件進行解析。通過解析我的意思是XML解析,而不是我必須將這個解析的數據傳遞給Java。 – Rachel 2009-10-28 12:44:03

0

我建議這個alternative-

一)解析XML並將其轉換成JSON(Java腳本對象符號)在PHP。 (操作JSON對象非常簡單,就像處理PHP中的地圖/數組一樣)
b)對JSON數據進行任何操作。
c)調用Java服務器端組件(Servlet/Struts動作等,假設您的Java爲Web組件)並將JSON數據發佈到組件。
d)剛剛讀取請求參數(JSON數據)並使用JSON庫(sourceforge具有用於java的良好JSON庫)將數據解析爲Map/List(取決於您擁有的數據類型)。

+0

JSON XML它有什麼不同? PHP和Java都很好地處理xml,爲什麼還要爲協議轉換而煩惱? – 2009-10-28 09:41:18

+0

我覺得JSON是結構化數據的一種較輕的表示形式,對我們通常使用的數據結構更接近和直觀。我還認爲XML需要比JSON更有效地進行解析。 – Keshav 2009-10-28 10:31:39

2

所以你想:

解析xml。

提取一些數據並將其插入到MySql中。

分析傳入數據並構建一些JRules參數。

然後調用Jrules。

對不對?

據我所知,JRules沒有命令行API - 如果它確實可以使用系統(...)調用來啓動應用程序。

我最好的建議是在Java中做所有事情!

JRules在Websphere中運行,所以您有一個確實運行的Servlet引擎。 Java附帶了解析XML,更新數據庫和調用JRules所需的所有API。爲什麼要從PHP調用Java類的痛苦?

另類!我注意到JRules有一個Web服務接口。 Web上的某處是一個php SOAP :: Client接口(它是可選的,但應該在大多數PHP 5發行版中默認提供),因此您可以在JRules上配置WebService,獲取xml架構並將其加載到php引擎中。然後使用phps SOAP :: Client類來調用Web Service相對簡單。請參閱http://th2.php.net/manual/en/book.soap.php

儘管如此,仍然更喜歡純Java選項。

+0

是的。你是對的。 – Rachel 2009-10-28 12:45:26

0

適用以下場景:

  1. 創建一個PHP REST服務,例如頁面,當標準web請求請求時(例如,嘗試在brwoser中打開頁面),它將返回xml文件。然後,Java應用程序將連接到php rest服務(例如頁面)並獲取xml輸出。

  2. Java應用程序啓動一個TCP服務器,PHP應用程序使用TCP協議連接到該服務器,並將XML文件發送給Java應用程序。

  3. PHP應用程序將xml文件保存在數據庫表的一列中,Java應用程序從那裏讀取它。