Tema: Re: Kaip nusiskaityti zymeta XML?
Autorius: Laimis
Data: 2011-04-02 04:16:12
mrlz777 rašė:

> noreciau nuskaityti XML faila (tei p5 formatu) ir susidet ji i db.
> Esme, kad ten yra rislus tekstas, bet kiekvienas zodis morfologiskai
> suzymetas, skyrybos zenklai ir tarpai tarp <pc></pc> tagu.
>
> Reiktu:
> 1. Atskirai i lenteles susideti atributu "lemma", "ana" reiksmes, ir
> pati zodi.
> 2. I lentele issisaugoti ir visa sakini.
>
> Kaip pasiulytumet toki varianta realizuot? :)
>
> Siaip radau, kad su $xml = simplexml_load_file("test.xml"); gali
> pasidaryti objekta, ir tada gali gauti atributu reiksmes, zodi ir pan.
> Pvz. su print $xml->text->body->p->w[1]['lemma']; gautume lemma reiksme
> "vadovas" ir t.t.

Variantų daug. XML/DOM parser'ių/reader'ių net keletas, būdų, kaip jais 
įvairiai pasinaudoti — apstu. Tačiau visų pirma pačiam turbūt tikrai 
būtų naudinga pastudijuoti XPath ir XSLT.

$xml = new SimpleXMLElement($string);

$nodes = $xml->xpath("//p/child::*");

$sen = '';
while(list(, $node) = each($nodes)) {
	$sen .= $node;
	if ($node->getName() == 'w') {
		
		$word  = $node;
		$ana   = $node['ana'];
		$lemma = $node['lemma'];
		
		// DB write word with attr.
	
	} elseif ($node->getName() == 'pc') {
		// end of sentence
		if (preg_match('/\.|!|;/', $node)) {

			// DB write sentence

			$sen = '';
		}
	}
}