DataObject のインスタンス内に any 値が設定されているかどうかは、インスタンスのプロパティーを調べて、いずれかのオープン・プロパティーが属性であるかどうかを確認すれば、簡単に判別できます。
DataObject は DataObject Type に any タグがあるかどうかを判別するメカニズムを備えていません。DataObject には、any と anyAttribute の両方に適用され、any のプロパティーを自由に追加できる「オープン」の概念だけがあります。any タグが存在すると DataObject は isOpen() = true で isSequenced() = true になりますが、単にその DataObject に anyAttribute タグと、Sequence のトピックで述べた順序付けされる理由の 1 つがあるにすぎない場合も考えられます。次の例は、それらの概念を実際に示したものです。
DataObject dobj = ... // タイプがオープンであるかどうかを検査し、そうでなければ // 中に any 値が設定されていることはありえない。 boolean isOpen = dobj.getType().isOpen(); if (!isOpen) return false; // any 値は設定されていない // オープン・プロパティーはインスタンス・プロパティー・リストに追加されるが // プロパティー・リストには追加されないため、それらのサイズを比較すれば // 設定されたオープン・データがあるかどうかを簡単に判別できる int instancePropertyCount = dobj.getInstanceProperties().size(); int definedPropertyCount = dobj.getType().getProperties().size(); // 同じであれば、オープン・コンテンツは設定されていない if (instancePropertyCount == definedPropertyCount) return false; // オープン・コンテンツの Property を調べて、any が Element であるかどうかを // 判別する for (int i=definedPropertyCount; i < instancePropertyCount; i++) { Property prop = (Property)dobj.getInstanceProperties().get(i); if (boXsdHelper.isElement(prop)) { return true; // any 値が検出された } } return false; // any 値は設定されていない