Following: Some of our customers have very strange datafiles they want to import into our database. Datasets are divided into several lines.
Now want I want to do is to write a program which I can convert this file into our format and back. I do have the descriptions.
To make it more flexible I want to use config-files, so we can adapt it easily for other customers with similar file formats.
So I made the config files. In the first "attributes.xml" there are the directories of the files, where they are located, which filetype, and to which directory they have to be copied,...
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<fileattrib>
<aliensourcepath value="C:\stimier" />
<aliensourcetype value="txt" />
<alientargetpath value="C:\stimier2" />
<alientargettype value="txt" />
<tocwebsourcepath value="C:\tocweb" />
<tocwebsourcetype value="txt" />
<tocwebtargetepath value="C:\tocweb2" />
<tocwebtargettype value="txt" />
</fileattrib>Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<item>
<line mode="f" startstring="\1" status="start" length="100">
<field name="tourname" mode="n" position="6" length="9" />
<field name="tournr" mode="n" position="19" length="4" />
</line>
<line mode="f" startstring="\2" status="" length="100">
</line>
<line mode="f" startstring="\3" status="" length="100">
<field name="plz" mode="n" position="3" length="5" />
<field name="ort" mode="n" position="8" length="12" />
<field name="strasse" mode="n" position="45" length="19" />
<field name="hnr" mode="n" position="66" length="4" />
</line>
<line mode="a" startstring="\4" status="" length="100">
<field name="kundenname" mode="n" position="3" length="19" />
<field name="kundennr" mode="n" position="24" length="9" />
<field name="hinweislg" mode="n" position="45" length="19" />
<field name="hinweiskd" mode="n" position="66" length="19" />
</line>
<line mode="a" startstring="\8" status="" length="100">
<field name="hinwzort" mode="n" position="24" length="19" />
</line>
<line mode="a" startstring="\5" status="" length="100">
<field name="znrm" mode="n" position="11" length="9" />
<field name="standalt" mode="m" position="24" length="8" />
<field name="standneu" mode="m" position="36" length="8" del="-" />
<field name="standalt" mode="m" position="45" length="8" />
<field name="standneu" mode="m" position="57" length="8" del="-" />
</line>
<line mode="a" startstring="\6" status="" length="100">
<field name="bem1" mode="m" position="14" length="15" />
<field name="bem2" mode="m" position="31" length="15" />
</line>
<line mode="m" startstring="\7" status="end" length="100">
<field name="sorttour" mode="n" position="3" length="3" />
</line>
</item>Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<item>
<line mode="n" startstring="" status="" length="100">
<field name="kundennr" mode="n" position="1" length="15" />
<field name="kundenname" mode="n" position="16" length="24" />
<field name="kurzname" mode="n" position="40" length="12" />
<field name="strasse" mode="n" position="52" length="19" />
<field name="hausnr" mode="n" position="71" length="4" />
<field name="hinweislg" mode="n" position="75" length="36" />
<field name="hinweiskd" mode="n" position="111" length="60" />
<field name="tournr" mode="n" position="171" length="4" />
<field name="sorttour" mode="n" position="175" length="6" />
<field name="tourname" mode="n" position="181" length="12" />
<field name="gangfolge" mode="n" position="193" length="20" />
<field name="plz" mode="n" position="213" length="6" />
<field name="ort" mode="n" position="219" length="19" />
<field name="znrm" mode="n" position="238" length="12" />
<field name="identnr" mode="n" position="250" length="12" />
<field name="zwkey" mode="n" position="262" length="4" />
<field name="vorkomma" mode="n" position="266" length="1" />
<field name="nachkomma" mode="n" position="267" length="1" />
<field name="faktor" mode="n" position="268" length="6" />
<field name="zorttext" mode="n" position="274" length="12" />
<field name="hinwzort" mode="n" position="286" length="60" />
<field name="hinwz" mode="n" position="346" length="72" />
<field name="sortzw" mode="n" position="418" length="3" />
<field name="datumalt" mode="n" position="421" length="6" />
<field name="standalt" mode="n" position="427" length="9" />
<field name="referenzwert" mode="n" position="436" length="9" />
<field name="verbrauchstage" mode="n" position="445" length="3" />
<field name="tolplausi" mode="n" position="448" length="2" />
<field name="datumneu" mode="n" position="450" length="6" />
<field name="standneu" mode="n" position="456" length="9" />
<field name="datumwertbildung" mode="n" position="465" length="6" />
<field name="isterfart" mode="n" position="471" length="1" />
<field name="ableser" mode="n" position="472" length="4" />
<field name="nennleistung" mode="n" position="476" length="9" />
<field name="bem1" mode="n" position="485" length="2" />
<field name="bem2" mode="n" position="487" length="2" />
<field name="bem3" mode="n" position="489" length="2" />
<field name="satzabschluss" mode="n" position="491" length="2" />
</line>
</item>I think the attributes are quit logical to understand, only the "mode"
f stands for fix, that means, the original data is grouped, but in our file I need it in every line, so when for example the line with startstring = "\3" appears, it should be kept in mind until a new line with the same startstring appears. a stands for "always exists", m for "may exist" and n for "normal".
That's not so hard, I know how I can do that.
My problem is the handling of the XML-Files. the attributes.xml is quite easy, but then: I have to through all files of a specific directory and always compare it with the xml, and when I have the data convert it with the other xml.
Does anyone know how I could handle that?
Greetings, Sosti
