Thread View: pl.comp.xml
7 messages
7 total messages
Started by mariusz
Wed, 19 Mar 2008 14:57
[XML] - Jak wyciagnac pojedyncze dane
Author: mariusz
Date: Wed, 19 Mar 2008 14:57
Date: Wed, 19 Mar 2008 14:57
36 lines
2178 bytes
2178 bytes
Witam,
Przedstawie moj problem na przykladzie:
<parametry>
<parametra1>aaa</parametr1>
<parametra2>bbb</parametr2>
<parametra3>ccc</parametr3>
<parametra4>
<wartoscx>
<dana1>aaa</dana1>
<dana2>bbb</dana2>
<dana3>ccc</dana3>
<dana4>ddd</dana4>
</wartoscx>
<wartoscx>
<dana1>aaa</dana1>
<dana2>bbb</dana2>
<dana3>ccc</dana3>
<dana4>ddd</dana4>
</wartoscx>
</parametr4>
</parametry>
Gdy probuje wyswietlic dana1 z galezi wartoscx wyswietlaja mi sie
wszystkie dane1 jedna po drugiej.
Problem w tym ze podgalez Parametru 4 zawsze ma taka sama nazwe
(wartoscx).
Jak sterowac wyswietlaniem wartoscx?
Jak wyswietlic tylko pierwsza dana1 z pierwszej galezi wartoscx?
Szukalem juz wszedzie ale nie znalazlem rozwiazania. Moga byc jakies
podpowiedzi.
Z gory dziekuje
Mariusz
Re: [XML] - Jak wyciagnac pojedyncze dane
Author: TOUDIdel
Date: Thu, 20 Mar 2008 07:37
Date: Thu, 20 Mar 2008 07:37
21 lines
1654 bytes
1654 bytes
Użytkownik <mariusz@poplawski.org.uk> napisał w wiadomości news:15d5fb4c-e244-4a01-b0eb-2d2122b5c1a8@s12g2000prg.googlegroups.com... > Gdy probuje wyswietlic dana1 z galezi wartoscx wyswietlaja mi sie > wszystkie dane1 jedna po drugiej. > Problem w tym ze podgalez Parametru 4 zawsze ma taka sama nazwe > (wartoscx). I bardzo dobrze, ze nazwa taka sama - nic tak nie ulatwia zycia jak regularnosc > Jak sterowac wyswietlaniem wartoscx? wyswietlaniem gdzie i czym? > Jak wyswietlic tylko pierwsza dana1 z pierwszej galezi wartoscx? /parametry/parametra4/wartoscx/dana1/text() -- td
Re: [XML] - Jak wyciagnac pojedyncze dane
Author: szomiz
Date: Thu, 20 Mar 2008 12:38
Date: Thu, 20 Mar 2008 12:38
9 lines
1365 bytes
1365 bytes
Użytkownik <mariusz@poplawski.org.uk> napisał w wiadomości news:15d5fb4c-e244-4a01-b0eb-2d2122b5c1a8@s12g2000prg.googlegroups.com... > Szukalem juz wszedzie ale nie znalazlem rozwiazania. Moga byc jakies > podpowiedzi. Nie wszedzie. Bylo na grupie tydzien temu. sz.
Re: - Jak wyciagnac pojedyncze dane
Author: SOLVER
Date: Thu, 20 Mar 2008 20:14
Date: Thu, 20 Mar 2008 20:14
88 lines
3975 bytes
3975 bytes
Na chwile obecna uzywam takiego parsera:
<?
// main function for parsing xml file
function MPxmlParse($file) {
ini_xml(); //in globals variables
$rXMLPARSER = xml_parser_create();
xml_parser_set_option($rXMLPARSER, XML_OPTION_CASE_FOLDING, 1);
xml_set_element_handler($rXMLPARSER, 'start_element',
'close_element');
xml_set_character_data_handler($rXMLPARSER,'character_data');
$fp = fopen($file, 'r');
while($sXmlStream = fread($fp, 4096)) {
if (!xml_parse($rXMLPARSER, $sXmlStream, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($rXMLPARSER)),
xml_get_current_line_number($rXMLPARSER)));
}
}
fclose($fp);
$aRet['hotels'] = $GLOBALS[aXmlTotalElements];
$aRet['infos'] = $GLOBALS[xmlInfos];
return $aRet;
}
//start_element
function start_element($parser, $name, $attrs='') {
$name = strtolower(trim($name));
$GLOBALS[sXmlactualElement] = $name;
if(in_array($name, $GLOBALS[aSpecialElements])) {
$GLOBALS[xmlElementCpt]++;
}elseif($name == 'drt') {
$GLOBALS[aXmlAttrs] = $attrs;
}
}
///close_element
function close_element($parser, $name, $attrs='') {
$name = strtolower(trim($name));
if($name == 'hotel' && $GLOBALS[sXmlactualElement] != 'file') {
$GLOBALS[xmlElementCpt]++;
}
}
//character_data
function character_data($parser, $data='') {
if($GLOBALS[sXmlactualElement] != 'hotel'
&& $GLOBALS[sXmlactualElement] != 'drt'
&& !in_array($GLOBALS[sXmlactualElement],
$GLOBALS[aSpecialElements]) ) {
$GLOBALS[aXmlTotalElements][$GLOBALS[xmlElementCpt]]
[$GLOBALS[sXmlactualElement]].= trim($data);
}elseif($GLOBALS[sXmlactualElement] == 'drt') {
$GLOBALS[xmlInfos] = $GLOBALS[aXmlAttrs];
}else{
if($GLOBALS[sXmlactualElement] != 'hotel') {
$GLOBALS[xmlInfos][$GLOBALS[sXmlactualElement]].=
trim($data);
}
}
}
//initialize xml variables
function ini_xml() {
$GLOBALS[aXmlTotalElements] = array();
$GLOBALS[sXmlactualElement] = '';
$GLOBALS[xmlElementCpt] = 0;
$GLOBALS[aXmlAttrs] = array();
$GLOBALS[xmlInfos] = array();
$GLOBALS[aSpecialElements] =
array('hotel','first_url','last_url','next_url','prev_url');
}
?>
a tak wyswietlam zawartosc:
include('include/functions/_xml_parser.php');
$sFile = 'http://xmlfile.xml';
$aArray = MPxmlParse($sFile); $aRess = $aArray['hotels'];
foreach ($aRess as $aInfo)
{
echo$hotel_name=$aInfo['hotel_name'];
}
Czy da sie w jakis sposob zmodyfikowac skrypt abym mogl wyswietlic
potrzebne dane?
Pozdrawiam
Mariusz
Re: - Jak wyciagnac pojedyncze dane
Author: SOLVER
Date: Thu, 20 Mar 2008 20:22
Date: Thu, 20 Mar 2008 20:22
8 lines
1358 bytes
1358 bytes
> Nie wszedzie. Bylo na grupie tydzien temu. Przeszukalem jeszcze raz grupe, post po poscie az do grudnia 2007. Niczego, nawet podobnego nie spotkalem. Mariusz
Re: - Jak wyciagnac pojedyncze dane
Author: szomiz
Date: Thu, 20 Mar 2008 20:30
Date: Thu, 20 Mar 2008 20:30
7 lines
1413 bytes
1413 bytes
Uzytkownik "SOLVER" <mariusz@poplawski.org.uk> napisal w wiadomosci news:03404a99-5b86-4278-8f7b-9ee2e9d3bfe3@e6g2000prf.googlegroups.com... > Na chwile obecna uzywam takiego parsera: A uzyj DOM'a i xPath'a... sz.
Re: - Jak wyciagnac pojedyncze dane
Author: TOUDIdel
Date: Fri, 21 Mar 2008 08:56
Date: Fri, 21 Mar 2008 08:56
14 lines
1552 bytes
1552 bytes
Uzytkownik "SOLVER" <mariusz@poplawski.org.uk> napisal w wiadomosci news:03404a99-5b86-4278-8f7b-9ee2e9d3bfe3@e6g2000prf.googlegroups.com... > Czy da sie w jakis sposob zmodyfikowac skrypt abym mogl wyswietlic > potrzebne dane? XPath to dobra wskazówka - wtedy wyluskanie kolekcji wezlów, które potrzebujesz uprszcza sie do mniej wiecej czegos takiego: /parametry/parametra4/wartoscx/dana1/text() -- td
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