xsd スキーマから生成された DataSource を使用します。ネストされたものも含め、DataSource からすべてのフィールドを取得する必要があります。私の問題は、スマートクライアント フォーラム フォーラムのこのトピックDataSource.getFields()
のように、最初のレベルのフィールドのみを使用する場合と同じです。
ネストされたフィールドを取得する方法を知っている人はいますか?
xsd スキーマから生成された DataSource を使用します。ネストされたものも含め、DataSource からすべてのフィールドを取得する必要があります。私の問題は、スマートクライアント フォーラム フォーラムのこのトピックDataSource.getFields()
のように、最初のレベルのフィールドのみを使用する場合と同じです。
ネストされたフィールドを取得する方法を知っている人はいますか?
これで問題が解決するかどうかはわかりません。CompanySlaves
は xsd のどこにも参照されていません。タイプは定義されていますが、使用されていません。
私はあなたが持っている必要があると思います<xsd:element name="SomeElementName" type="tns:CompanySlaves"></xsd:element> in your xsd definition
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://xml.netbeans.org/schema/newXmlSchema"
xmlns:tns="http://xml.netbeans.org/schema/newXmlSchema"
elementFormDefault="qualified">
<xsd:element name="SubrogationClaim" type="tns:SubrogationClame"></xsd:element>
<xsd:complexType name="SubrogationClame">
<xsd:sequence>
<xsd:element name="CompanyName" type="xsd:string"></xsd:element>
<xsd:element name="CompanyPlace" type="xsd:string"></xsd:element>
<xsd:element name="CompanyEmploee" type="tns:SubrogationClame"></xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CompanySlaves">
<xsd:sequence>
<xsd:element name="EmploeeName" type="xsd:string"></xsd:element>
<xsd:element name="EmploeeSalary" type="xsd:string"></xsd:element>
</xsd:sequence>
</xsd:ComplexType>
</xsd:schema>
解決策を見つけました。ネストされたフィールドを取得するには、DataSource.getDataSource(ID) を使用できます。たとえば、dataSource がメインの DataSource である場合、次のように実行できます。
private List<DataSourceField> getAllFields(DataSource dataSource)
{
List <DataSourceField> fieldList = new ArrayList<DataSourceField>();
DataSourceField [] fields = dataSource.getFields();
fieldList.addAll(Arrays.asList(fields));
for (DataSourceField field : fields);
{
String fieldName = field.getName();
DataSource ds = DataSource.getDataSource(fieldName);
if (ds != null)
{
fieldList.remove(field);
DataSourceField[] nFields = ds.getFields();
fieldList.addAll(Arrays.asList(nFields));
getAllFields(ds);
}
}
return fieldList;
}