Kirjoittaja Aihe: XML tiedoston pilkkominen ? [ratkaistu]  (Luettu 3452 kertaa)

tjka

  • Käyttäjä
  • Viestejä: 144
    • Profiili
XML tiedoston pilkkominen ? [ratkaistu]
« : 10.03.14 - klo:10.37 »
Scriptigurut hoi, osaisiko joku auttaa??? Allaoleva on ainakin mun taidoille liian vaativa...  :-[

Noin about 10 MB XML tiedosto (jossa sisällä parituhatta erillistä osiota tietoineen) pitäisi pilkkoa automaattisesti scriptillä about 10 osaan, allaoleva esim kolmeen osaan.

Original.xml:
<Alku>
<Tietoja>
<abc>tietoa1</abc>
<def>tietoa1</def>
<ghi>tietoa1</ghi>
</Tietoja>
<Tietoja>
<abc>tietoa2</abc>
<def>tietoa2</def>
</Tietoja>
<Tietoja>
<def>tietoa3</def>
<ghi>tietoa3</ghi>
</Tietoja>
<Tietoja>
<abc>tietoa4</abc>
<def>tietoa4</def>
<ghi>tietoa4</ghi>
</Tietoja>
<Tietoja>
<abc>tietoa5</abc>
<def>tietoa5</def>
<ghi>tietoa5</ghi>
</Tietoja>
<Tietoja>
<abc>tietoa6</abc>
<def>tietoa6</def>
</Tietoja>
</Alku>

--------------------------------

Newfile1.xml:
<Alku>
<Tietoja>
<abc>tietoa1</abc>
<def>tietoa1</def>
<ghi>tietoa1</ghi>
</Tietoja>
<Tietoja>
<abc>tietoa2</abc>
<def>tietoa2</def>
</Tietoja>
</Alku>

Newfile2.xml:
<Alku>
<Tietoja>
<def>tietoa3</def>
<ghi>tietoa3</ghi>
</Tietoja>
<Tietoja>
<abc>tietoa4</abc>
<def>tietoa4</def>
<ghi>tietoa4</ghi>
</Tietoja>
</Alku>

Newfile3.xml:
<Alku>
<Tietoja>
<abc>tietoa5</abc>
<def>tietoa5</def>
<ghi>tietoa5</ghi>
</Tietoja>
<Tietoja>
<abc>tietoa6</abc>
<def>tietoa6</def>
</Tietoja>
</Alku>


-tjka-
« Viimeksi muokattu: 12.03.14 - klo:20.05 kirjoittanut tjka »

matsukan

  • Käyttäjä
  • Viestejä: 2152
    • Profiili
Vs: XML tiedoston pilkkominen ?
« Vastaus #1 : 10.03.14 - klo:12.30 »

Mikset tee jollakin muulla kuin bash:lla?

Python
Perl?

https://www.linuxquestions.org/questions/programming-9/bash-script-to-strip-some-content-from-xml-file-591378/

Toivottavasti xml on helposti katkaistavissa.
Pohjois-pohjanmaa
-- motto:  backupin tarve huomataan aina liian myöhään

tjka

  • Käyttäjä
  • Viestejä: 144
    • Profiili
Vs: XML tiedoston pilkkominen ?
« Vastaus #2 : 10.03.14 - klo:13.41 »
Koska en osaa mitään ohjelmointia. Vain Bash onnistuu jollain tavalla koska olen tarvinnut scriptejä palvelinten jälkiasennuksissa ja ylläpidossa...

Käytännössä xml tiedostoa pitäisi vain lukea kunnes on luettu n kertaa "<Tietoja>", kirjoittaa siihen asti luetut tiedostoon #1 ja jatkaa lukemista kohdasta n+1...


-tjka-

matsukan

  • Käyttäjä
  • Viestejä: 2152
    • Profiili
Vs: XML tiedoston pilkkominen ?
« Vastaus #3 : 10.03.14 - klo:14.15 »

http://stackoverflow.com/questions/893585/how-to-parse-xml-in-bash

Eli kuten tuolla sanotaa, bash:issa ei ole varmaankaan suoranaista xml tukea,
Pohjois-pohjanmaa
-- motto:  backupin tarve huomataan aina liian myöhään

tjka

  • Käyttäjä
  • Viestejä: 144
    • Profiili
Vs: XML tiedoston pilkkominen ?
« Vastaus #4 : 10.03.14 - klo:15.28 »
OK. Ja kiitos, mutta tuo menee mulle liian vaikeaksi...  :-[  ...vaikka koodin tarkoitusta oli hienosti avattukin. No, siksi pistinkin tämän viestin alunperin. Perl tai Python kävisi myös yhtä hyvin mutta silloin pitäisi olla ns valmis tekele kun en ole niiden kanssa yhtään puuhastellut...


-tjka-

jekku

  • Käyttäjä
  • Viestejä: 2624
    • Profiili
Vs: XML tiedoston pilkkominen ?
« Vastaus #5 : 10.03.14 - klo:19.31 »
Pitäisikö noiden osienkin olla validia xml:ää?


tjka

  • Käyttäjä
  • Viestejä: 144
    • Profiili
Vs: XML tiedoston pilkkominen ?
« Vastaus #6 : 11.03.14 - klo:11.09 »
Pitäisikö noiden osienkin olla validia xml:ää?


Jep. Ihan suoraan rivi riviltä luettuna mitä alkuperäisessäkin tiedostossa on. Se vain pitäisi pilkkoa osiin, kuten esimerkissä...

-tjka-

matsukan

  • Käyttäjä
  • Viestejä: 2152
    • Profiili
Vs: XML tiedoston pilkkominen ?
« Vastaus #7 : 11.03.14 - klo:12.23 »
Koodia: [Valitse]
xml_split
http://linux.die.net/man/1/xml_split

Löytyy paketista xml-twig-tools joka on jonkinmutoinen Perl häkkyrä.

Asennetaan komennolla :

Koodia: [Valitse]
sudo apt-get install xml-twig-tools
« Viimeksi muokattu: 11.03.14 - klo:12.34 kirjoittanut syrtek66 »
Pohjois-pohjanmaa
-- motto:  backupin tarve huomataan aina liian myöhään

jekku

  • Käyttäjä
  • Viestejä: 2624
    • Profiili
Vs: XML tiedoston pilkkominen ?
« Vastaus #8 : 11.03.14 - klo:13.09 »
Koodia: [Valitse]
xml_split
http://linux.die.net/man/1/xml_split

Löytyy paketista xml-twig-tools joka on jonkinmutoinen Perl häkkyrä.

Asennetaan komennolla :

Koodia: [Valitse]
sudo apt-get install xml-twig-tools

Pikaisen vilkaisun perusteella vaikutti muuten perin pätevältä!

Kiitokset :)

tjka

  • Käyttäjä
  • Viestejä: 144
    • Profiili
Vs: XML tiedoston pilkkominen ?
« Vastaus #9 : 12.03.14 - klo:17.01 »
...pikaisesti kokeiltuna näyttäisi toimivan...

Kiitos !  :D

-tjka-

tjka

  • Käyttäjä
  • Viestejä: 144
    • Profiili
Vs: XML tiedoston pilkkominen ?
« Vastaus #10 : 12.03.14 - klo:20.04 »
Jep. Toimiihan se. Komennolla...

xml_split -s 1MB -b split original.xml

...xml tiedosto jaetaan noin megan kokoisiin tiedostoihin ja ne nimetään original nimen sijaan split nimisiksi. Split-00.xml tiedostossa on vain alkuperäiset aloitustagit ja tieto muista xml tiedostoista. Sitä en tarvitse.
Sen verran täytyy vielä puuhata että aloitusrivit <xml_split:root xmlns:xml_split="http://xmltwig.com/xml_split"> ja lopetusrivit </xml_split:root> pitää korvata sed´illä kaikissa tiedostoissa alkuperäisillä riveillä. Muuten bueno.

Muchos gracias !

-tjka-