2011-06-20 19 views
3

我正在編寫一個必須利用java實用程序應用程序的objective-c/cocoa應用程序。所以我打算使用NSTask來調用java應用程序。我試圖找出在可可和java應用程序之間進行通信的最簡單方法。是否有可能通過標準的java應用程序發送一個XML格式的字符串,並獲得可可應用程序來創建一個XML對象,然後被反序列化並用於其數據?可以使用NSTask的標準輸出來生成一個xml文件

+0

您是否可以控制Java實用程序應用程序的源代碼?公用事業應該在Cocoa應用程序運行時持續運行? – 2011-06-20 21:17:40

+0

是的,java實用程序將由我編寫。 Java實用程序只是執行特定的任務,所以在可可應用程序的運行時間內,它會在需要時啓動。 – Derek

回答

3

您可以使用NSTaskstandardOutput方法。這會給你一個NSPipe對象,你可以通過fileHandleForReadingNSFileHandle。如果您需要基於樹的XML處理,您只需在句柄上輸入readDataToEndOfFile即可獲取NSData對象,您可以將其傳遞給NSXMLDocument。否則,您將需要查看NSXMLParser以進行基於事件的解析。這兩個XML引用都有相應的指南,這些指南很有用。

從NSTask的出發點開始,所有這些都非常正確。

+0

'NSTask'上的'setStandard *'方法也會接受'NSFileHandle'對象,除了'NSPipe'對象。如果您正在讀/寫的數據量可能超過管道允許的數量,則這樣做會更好。 –

+0

謝謝你一堆。我認爲這會做到這一點。我會試一試。 – Derek

相關問題