2013-02-07 54 views
2

我想弄清楚如何通過Java API訪問存儲在MarkLogic中的文件的last-modified屬性,但是我將空着。從MarkLogic Java API獲取最後修改的屬性

我試圖通過元數據獲取它,但對於一個簡單的XML文件,我根本沒有看到任何元數據。我有一個存儲在MarkLogic中的測試文件。當我運行此代碼時:

DocumentMetadataHandle metadata = new DocumentMetadataHandle(); 

    XMLDocumentManager docMgr = client.newXMLDocumentManager(); 
    docMgr.read("/path/test_file.xml", metadata, handle); 

    System.out.println("Output: " + handle.get()); 

    System.out.println("Properties:\n"); 
    for (Map.Entry<QName,Object> prop : metadata.getProperties().entrySet()) { 
     System.out.println("Prop: " + prop.getKey() + ": " + prop.getValue()); 
    }  

...我看到了我期望的對象,但沒有屬性。

我做錯了什麼?我是否需要調整數據庫定義中的某些內容以使這些信息可訪問?

回答

2

檢查數據庫配置以確保啓用「保持上次修改」。該設置位於/database-admin.xqy屏幕上。

接下來,驗證屬性都可以使用端口8002查詢控制檯這是一個XQuery接口,但你只需要一個簡單的查詢:xdmp:document-properties('some-uri')其中some-uri是文檔URI。

如果xdmp:document-properties有效,那麼您可以更加確信問題出在Java層。

+0

賓果; 「保持上次修改」未啓用。勾號應該是你的。謝謝! – BlairHippo

+1

默認情況下,維護上次修改的內容主要是針對它所施加的開銷:額外寫入更新並需要屬性片段。在開啓它之前,確保你已經考慮了這些影響。話雖如此,屬性可以成爲管理元數據的一種便捷方式。 –