Ես փորձում եմ օգտագործել DBUnit-ը մեր AS400-ից տվյալներ արտահանելու և այն ներմուծելու HSQLDB տվյալների բազա՝ JUnit-ի փորձարկման համար, սակայն տվյալների տիպի տեղեկատվությունը կարծես արտահանված/ներմուծված չէ: Ամեն ինչ կարծես արտահանվում է (հետևաբար կներմուծվի) որպես CDATA: Ինչ-որ մեկը կարո՞ղ է ինձ ասել, թե որտեղից գտնել սրա պատասխանը:
Ես հաջողությամբ կառուցեցի և գործարկեցի օրինակներից մեկը.
public static void main(String[] args) throws Exception
{
// database connection
Class driverClass = Class.forName("com.ibm.as400.access.AS400JDBCDriver");
Connection jdbcConnection = DriverManager.getConnection("jdbc:as400://myserver;libraries=MYLIB", "user", "password");
IDatabaseConnection connection = new DatabaseConnection(jdbcConnection);
// partial database export
QueryDataSet partialDataSet = new QueryDataSet(connection);
partialDataSet.addTable("TABLE1");
partialDataSet.addTable("TABLE2");
FlatXmlDataSet.write(partialDataSet, new FileOutputStream("flatpartial_as400.xml"));
FlatDtdDataSet.write(connection.createDataSet(), new FileOutputStream("flatdtd_as400.dtd"));
XmlDataSet.write(partialDataSet, new FileOutputStream("partial_as400.xml"));
Սա ինձ տալիս է, օրինակ, հետևյալ արդյունքը.
<?xml version='1.0' encoding='UTF-8'?>
<dataset>
<TABLE1/>
<TABLE2 ADDRESS_ID="1" ADDRESS_TYPE="1" ADDRESS_DESCRIPTION="Billing Address "/>
<TABLE2 ADDRESS_ID="2" ADDRESS_TYPE="2" ADDRESS_DESCRIPTION="Delivery Address "/>
<TABLE2 ADDRESS_ID="3" ADDRESS_TYPE="3" ADDRESS_DESCRIPTION="Owner Address "/>
<TABLE2 ADDRESS_ID="4" ADDRESS_TYPE="4" ADDRESS_DESCRIPTION="Owner Previous Address "/>
<TABLE2 ADDRESS_ID="5" ADDRESS_TYPE="5" ADDRESS_DESCRIPTION="Store Address "/>
</dataset>
Ահա DTD հատվածը, որը արտադրվում է.
<!ELEMENT TABLE2 EMPTY>
<!ATTLIST TABLE2
ADDRESS_ID CDATA #REQUIRED
ADDRESS_TYPE CDATA #REQUIRED
ADDRES_DESCRIPTION CDATA #REQUIRED
>
Առաջին դաշտը պետք է լինի DECIMAL (10,0), բայց դա CDATA է: Ակնհայտ է, որ դա խնդիր կլիներ տվյալների ամբողջականության տեսանկյունից: Վրիպազերծիչում ես տեսնում եմ, որ տիպի տեղեկատվությունը մուտքագրվում է DBUnit փաթեթի մեջ (ADDRESS_ID դաշտը կոդի ներսում տասնորդական է): Բայց այդ տեղեկատվությունը չի մտնում այն ֆայլի XML DTD-ում:
Ցանկացած օգնություն գնահատելի է...