2016-02-03 26 views
0

我正在使用node.js來使用Watson對話框系統。我用一個函數來創建一個新的對話框,而是沿着碼的地方我得到相關的XML文件,讀取用於xml文件的Watson對話框服務錯誤無效架構

{ code: 400, 
    error: 'Failed to import file. Possibly due to corrupt or invalid file or system error. - java.lang.IllegalStateException: reader must be on a START_ELEMENT event, not a -1 event', 
    conversionLog: 'WARN: No valid xsd schema specified in XML header. Assuming version="WatsonDialogDocument_1.1".\n' } 

我使用的是比薩餅對話框XML是可作爲一個奇怪的錯誤對話系統測試的例子,所以我不認爲問題是該文件無效。這是我用來創建對話框的代碼。

var params = { 
    name: req.body.username, 
    file: fs.createReadStream(__dirname+'/public/dialogs/users/'+req.body.username+'/'+req.body.username+'.xml') 
    }; 

    dialog_service.createDialog(params, function(err, dialog) { 
    if (err) 
    console.log(err) 
    else 
    console.log(dialog); 
    }); 

我還在與xml對話框文件相同的文件夾中有WatsonDialogDocument_1.0.xsd文檔。在對話框的xml文件中,您還可以找到這個

<dialog xsi:noNamespaceSchemaLocation="WatsonDialogDocument_1.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 

回答

1

嘗試將版本提升到WatsonDialogDocument_1.1.xsd。 您還應該嘗試首先從REST客戶端發佈xml。捲曲或休息控制檯。只是爲了確保問題出現在xml中而不是代碼中。

順便說一句, 你不需要XSD文件來做POST。

<dialog xsi:noNamespaceSchemaLocation="WatsonDialogDocument_1.1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

+0

我想使用1.1版本,但我不知道在哪裏可以找到它。 – Atirag

+0

我只是通過POST發送xml的名稱。 xml文件事先被一個函數拷貝到這個路徑/public/dialogs/users/'+req.body.username+'/'+req.body.username+'.xml,然後通過createReadStream函數讀取 – Atirag

+0

你不' t需要xsd發佈對話,所以你可以使用1.1。請檢查您是否可以通過其他REST客戶端發佈由您的代碼創建的xml。例如:curl -X POST -F「[email protected]/yourpath/dialog.xml」-F「name = whatever」https://gateway.watsonplatform.net/dialog/api/v1/dialogs/ -u「username:密碼「 – Dudi

相關問題