🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.python
4 messages
4 total messages Started by look Tue, 05 Jan 2010 00:28
zmiana wartości węzła tesktowego w xml
#27131
Author: look
Date: Tue, 05 Jan 2010 00:28
29 lines
1762 bytes
Witam,

Poszukuję szybkiego sposobu zmiany wartości dla wybranych węzłów
tekstowych.
Przykładowo mam kilkadziesiąt plików w których jest m. in. coś taiego:

<znajomi>
	<osoba>
		<imie>Zygmunt</imie>
		<email>1@1.pl</email>
	</osoba>
	<osoba>
		<imie>Janina</imie>
		<email>2@2.pl</email>
	</osoba>
</znajomi>

i chcę to zmienić na:

<znajomi>
	<osoba>
		<imie>Zygmunt1</imie>
		<email>1@1.pl</email>
	</osoba>
	<osoba>
		<imie>Janina1</imie>
		<email>2@2.pl</email>
	</osoba>
</znajomi>
Re: zmiana wartości węzła tesktowego w xml
#27132
Author: Łukasz Rekucki
Date: Tue, 05 Jan 2010 02:29
38 lines
2499 bytes
On Jan 5, 1:28 am, look <lukaszwojnow...@gmail.com> wrote:
> Witam,
>
> Poszukuję szybkiego sposobu zmiany wartości dla wybranych węzłów
> tekstowych.
> Przykładowo mam kilkadziesiąt plików w których jest m. in. coś taiego:
>
> <znajomi>
>         <osoba>
>                 <imie>Zygmunt</imie>
>                 <email>1...@1.pl</email>
>         </osoba>
>         <osoba>
>                 <imie>Janina</imie>
>                 <email>2...@2.pl</email>
>         </osoba>
> </znajomi>
>
> i chcę to zmienić na:
>
> <znajomi>
>         <osoba>
>                 <imie>Zygmunt1</imie>
>                 <email>1...@1.pl</email>
>         </osoba>
>         <osoba>
>                 <imie>Janina1</imie>
>                 <email>2...@2.pl</email>
>         </osoba>
> </znajomi>

Z głowy to będzie jakoś tak (o ile masz lxml):

import lxml.etree as etree
document = etree.parse(sciezka_do_pliku)
for name in document.xpath("//znajomi/osoba/imie"):
    name.text = zmien_jakos_tekst(name.text)
print etree.tostring(document)
Re: zmiana wartości węzła tesktowego w xml
#27133
Author: Rob Wolfe
Date: Tue, 05 Jan 2010 07:52
67 lines
3173 bytes

Łukasz Rekucki napisał(a):
> On Jan 5, 1:28 am, look <lukaszwojnow...@gmail.com> wrote:
> > Witam,
> >
> > Poszukuję szybkiego sposobu zmiany wartości dla wybranych węzłów
> > tekstowych.
> > Przykładowo mam kilkadziesiąt plików w których jest m. in. coś taiego:
> >
> > <znajomi>
> >         <osoba>
> >                 <imie>Zygmunt</imie>
> >                 <email>1...@1.pl</email>
> >         </osoba>
> >         <osoba>
> >                 <imie>Janina</imie>
> >                 <email>2...@2.pl</email>
> >         </osoba>
> > </znajomi>
> >
> > i chcę to zmienić na:
> >
> > <znajomi>
> >         <osoba>
> >                 <imie>Zygmunt1</imie>
> >                 <email>1...@1.pl</email>
> >         </osoba>
> >         <osoba>
> >                 <imie>Janina1</imie>
> >                 <email>2...@2.pl</email>
> >         </osoba>
> > </znajomi>
>
> Z głowy to będzie jakoś tak (o ile masz lxml):
>
> import lxml.etree as etree
> document = etree.parse(sciezka_do_pliku)
> for name in document.xpath("//znajomi/osoba/imie"):
>     name.text = zmien_jakos_tekst(name.text)
> print etree.tostring(document)


Mozna tez uzyc etree z biblioteki standardowej:

<code>
import xml.etree.ElementTree as etree

xml = '''<znajomi>
        <osoba>
                <imie>Zygmunt</imie>
                <email>1...@1.pl</email>
        </osoba>
        <osoba>
                <imie>Janina</imie>
                <email>2...@2.pl</email>
        </osoba>
</znajomi>'''


tree = etree.fromstring(xml)
for imie in tree.getiterator('imie'):
    imie.text = imie.text + "1"
print etree.tostring(tree)
</code>

RW
Re: zmiana wartości węzła tesktowego w xml
#27134
Author: look
Date: Tue, 05 Jan 2010 21:20
46 lines
2867 bytes
Bardzo dziękuję. Właśnie o to mi chodziło. Swoją drogą w sieci
znalazłem tylko tutorial do lxml-a i nigdzie nie mogłem znaleźć tego
co potrzebowałem.

On 5 Sty, 03:29, Łukasz Rekucki <lreku...@gmail.com> wrote:
> On Jan 5, 1:28 am, look <lukaszwojnow...@gmail.com> wrote:
>
>
>
> > Witam,
>
> > Poszukuję szybkiego sposobu zmiany wartości dla wybranych węzłów
> > tekstowych.
> > Przykładowo mam kilkadziesiąt plików w których jest m. in. coś taiego:
>
> > <znajomi>
> >         <osoba>
> >                 <imie>Zygmunt</imie>
> >                 <email>1...@1.pl</email>
> >         </osoba>
> >         <osoba>
> >                 <imie>Janina</imie>
> >                 <email>2...@2.pl</email>
> >         </osoba>
> > </znajomi>
>
> > i chcę to zmienić na:
>
> > <znajomi>
> >         <osoba>
> >                 <imie>Zygmunt1</imie>
> >                 <email>1...@1.pl</email>
> >         </osoba>
> >         <osoba>
> >                 <imie>Janina1</imie>
> >                 <email>2...@2.pl</email>
> >         </osoba>
> > </znajomi>
>
> Z głowy to będzie jakoś tak (o ile masz lxml):
>
> import lxml.etree as etree
> document = etree.parse(sciezka_do_pliku)
> for name in document.xpath("//znajomi/osoba/imie"):
>     name.text = zmien_jakos_tekst(name.text)
> print etree.tostring(document)
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads