6.10.2 XML文書管理機能を使用する操作

ここでは,XML文書管理機能を使用する操作について説明します。

<この項の構成>
(1) XML文書の新規作成
(2) XML文書の更新

(1) XML文書の新規作成

ここでは,XML文書の新規作成について説明します。

まず,DbjXmlUploadInfoインターフェースだけを使用する例を示します。文書の作成に必要なDMAクラスの情報は抽出しません。

また,XMLプロパティマッピング機能でXML形式のファイルからマッピングするプロパティ以外にも,プロパティを設定します。作成したXML文書には,プロパティ値集合に指定したプロパティとプロパティマッピング機能でマッピングされたプロパティがマージされて設定されます。なお,プロパティ値集合に指定したプロパティと同じプロパティがXMLプロパティマッピング機能でマッピングされた場合は,XMLプロパティマッピング機能でマッピングされた値がXML文書のプロパティの初期値として設定されます。

// XML文書を登録する例1
 
 // factory:DbjFactoryインターフェース
 // docspc:DbjDocSpaceインターフェース
 
// 初期値として設定するプロパティ値集合を作成する
DbjPropSet props = factory.createPropSet();
// Authorプロパティの値を設定する
props.setPropVal("Author","hitachi");

// 文書のアップロード情報のリストを作成する
File uplFile = new File( parentdir, "test.xml" );

List uploadlist = new ArrayList();
uploadlist.add( factory.createXmlUploadInfo(
                uplFile.getCanonicalPath(),
                "test.xml",
                "text/xml",
                null,
                DbjDef.XMLPARSE_NO_EXTERNAL_ENTITIES,
                mappingId,
                DbjDef.INDEXTYPE_STRUCTURED,
                null ) );
 
// リンク設定情報のリストを作成する
List linklist = new ArrayList();
linklist.add( factory.createSetDCRLinkInfo(
               docspc.createObjConnection(parentoiid),
               null ) );

// XML文書を作成する
DbjObj obj = docspc.createDocument(
                "mdmClass_Document",
                props,
                uploadlist,
                linklist );

次に,マッピング定義ファイルからDMAクラスも抽出して,XML文書を作成する例を示します。

// XML文書を登録する例2
 
 // factory:DbjFactoryインターフェース
 // docspc:DbjDocSpaceインターフェース
 
// XMLプロパティマッピング機能を実行する
File uplFile = new File( parentdir, "test.xml" );

DbjXmlTranslator xmltranslator = factory.createXmlTranslator(
                   docspaceid,
                   null );
DbjMappedProp mappedProps = xmltranslator.getMappedProperties(
                   uplFile.getCanonicalPath(),
                   DbjDef.XMLPARSE_NO_EXTERNAL_ENTITIES,
                   mappingId );

// XML文書のアップロード情報を作成する
List uploadlist = new ArrayList();
uploadlist.add( factory.createXmlUploadInfo(
               uplFile.getCanonicalPath(),
               "test.xml",
               "text/xml",
               null,
               DbjDef.XMLPARSE_NO_EXTERNAL_ENTITIES,
               null,   // XMLプロパティマッピング機能は使用しない
               DbjDef.INDEXTYPE_STRUCTURED,
               null ) );

// XML文書を作成する
DbjObj obj = docspc.createVrDocument(
               mappedProps.getClassList.get(0),
               mappedProps.getClassList.get(1),
               mappedProps.propSet(),
               uploadlist,
               null );

(2) XML文書の更新

ここでは,XML文書のコンテンツ更新時に,更新するXMLファイルからプロパティをマッピングする方法について説明します。文書作成時以外には,XML文書のアップロード情報によるXMLプロパティマッピング機能は使用できません。この場合は,DbjXmlTranslatorインターフェースを使用して,コンテンツの更新とは別に,マッピングするプロパティ値集合を作成して,プロパティを更新します。

XML文書作成時以外にXMLプロパティマッピング機能を使用する例を示します。

// XML文書作成時以外にXMLプロパティマッピング機能を使用する例
 
 // factory:DbjFactoryインターフェース
 
// DbjXmlTranslatorインターフェースを取得する
DbjXmlTranslator xmlTran = factory.createXmlTranslator(
          docspaceid,
          null );

// XMLプロパティマッピング機能を実行して,
// DbjMappedPropインターフェースを取得する
File uplFile = new File( parentdir, "test.xml" );

DbjMappedProp mappedProps = xmlTran.getMappedProperties(
          upFile.getCanonicalPath(),
          DbjDef.XMLPARSE_NO_EXTERNAL_ENTITIES,
          mappingId );

// プロパティ値集合を作成して,文書空間オブジェクトに
// 設定する
DbjPropSet props = factory.createPropSet();
props.setPropVal(" Author", "hitachi" );
props.putAll( mappedProps.propSet() );

obj.writeProperties( props );

また,XML文書のコンテンツ更新時にXMLインデクスデータ作成機能を使用する場合は,XML文書のアップロード情報を使用します。ただし,XMLインデクスデータ作成機能が使用できるのは,コンテンツを更新する対象がマスタレンディションの場合だけです。

マスタレンディションであるXML文書のコンテンツを更新する例を示します。

// XML文書のコンテンツを更新する例
 
 // factory:DbjFactoryインターフェース
 // docspc:DbjDocSpaceインターフェース
 // obj:DbjObjインターフェース
 
// XML文書のアップロード情報を作成する
File uplFile = new File( parentdir, "test.xml" );

DbjXmlUploadInfo xmluploadinfo =
 factory.createXmlUploadInfo(
                uplFile.getCanonicalPath(),
                "test.xml",
                "text/xml",
                null,
                DbjDef.XMLPARSE_NO_EXTERNAL_ENTITIES,
                null,  // XMLプロパティマッピング機能は無効
                DbjDef.INDEXTYPE_STRUCTURED,
                null );

// XML文書のコンテンツを更新する
//  (XMLインデクスデータ機能が実行されて,
//    全文検索インデクスが更新される)
obj.uploadContents( null,
                   xmluploadinfo );