/** * @throws BadData * @return mixed */ public function parse() { $record = $this->createRecord(); // While this recipe is still open while ($this->tagName != $this->xmlReader->name || \XMLReader::END_ELEMENT != $this->xmlReader->nodeType) { if (!@$this->xmlReader->read()) { throw new BadData('Surprise end of file! Missing close tag <' . $this->tagName . '>'); } if ($this->xmlReader->isEmptyElement) { continue; } if (\XMLReader::ELEMENT == $this->xmlReader->nodeType) { if (isset($this->simpleProperties[$this->xmlReader->name])) { $method = $this->simpleProperties[$this->xmlReader->name]; // Call the setter method $record->{$method}($this->xmlReader->readString()); } elseif (isset($this->complexProperties[$this->xmlReader->name])) { $this->setComplexProperty($record); } elseif (isset($this->complexPropertySets[$this->xmlReader->name])) { $this->setComplexPropertySet($record); } else { $this->otherElementEncountered($record); } } } return $record; }
/** * @param \XMLReader $xml an XML document to be transformed to GitHub Markdown * @return String */ protected function processXml($xml) { $output = ''; // states $inLink = false; /** * Mapping of elements which just append additional markup to the text */ $appendersMap = [self::NODE_HR => '----', self::NODE_BR => "\n", self::NODE_H1 => 'h1. ', self::NODE_H2 => 'h2. ', self::NODE_H3 => 'h3. ', self::NODE_H4 => 'h4. ', self::NODE_H5 => 'h5. ', self::NODE_H6 => 'h6. ', self::NODE_BLOCKQUOTE => 'bq. ']; /** * Mapping of elements which wrap text with additional markup */ $wrappersMap = [self::NODE_EMPHASIZED => '_', self::NODE_STRONG => '*']; while ($xml->read()) { // if it's a beginning of new paragraph just continue if ($xml->nodeType === \XMLReader::ELEMENT && $xml->name === self::NODE_PARAGRAPH) { continue; } // if it's an ending of a paragraph add newlines if ($xml->nodeType === \XMLReader::END_ELEMENT && $xml->name === self::NODE_PARAGRAPH) { $output .= "\n\n"; } // take care of wrapping nodes if (in_array($xml->name, array_keys($wrappersMap))) { $output .= $wrappersMap[$xml->name]; } // take care of nodes which just append things to their text if (in_array($xml->name, array_keys($appendersMap)) && $xml->nodeType !== \XMLReader::END_ELEMENT) { $output .= $appendersMap[$xml->name]; } // links if ($xml->name === self::NODE_A && $xml->nodeType !== \XMLReader::END_ELEMENT) { $output .= '['; $inLink = true; } if ($xml->name === self::NODE_A && $xml->nodeType === \XMLReader::END_ELEMENT) { $output .= $xml->getAttribute('href') . ']'; $inLink = false; } // just add the text if ($xml->nodeType === \XMLReader::TEXT) { $text = $xml->readString(); if ($inLink && !empty($text)) { $output .= $text . '|'; } else { $output .= $text; } } } return trim($output); }
/** * Scans conntent for cachedUntil and error * * @param string $content * @param int $errorCode * @param string $errorText */ protected function scanContent($content, &$errorCode, &$errorText) { $this->cachedUntil = null; $reader = new XMLReader(); $reader->xml($content); while ($reader->read()) { if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "error") { // got an error $errorText = $reader->readString(); $errorCode = intval($reader->getAttribute('code')); if ($reader->next("cachedUntil")) { $this->cachedUntil = $reader->readString(); } } else { if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == "result") { // no errors, we need to read the cache time though if ($reader->next("cachedUntil")) { $this->cachedUntil = $reader->readString(); } } } } $reader->close(); }
public function parse(\XMLReader $xmlReader, $startingDepth = 0, $parseOne = false) { if ($this->callback !== null) { $node = new Node(); $node->name = $xmlReader->name; $node->depth = $xmlReader->depth; $node->text = $xmlReader->readString(); if ($xmlReader->hasAttributes && $xmlReader->moveToFirstAttribute()) { do { $node->attributes[$xmlReader->name] = $xmlReader->value; } while ($xmlReader->moveToNextAttribute()); $xmlReader->moveToElement(); } $callback = $this->callback; $callback($this->processNode($node, $xmlReader)); } }
/** * {@inheritdoc} */ public function next() { $this->valid = false; $style = null; $type = null; $columnIndex = null; $rowBuilder = null; $currentKey = 0; while ($this->xml->read()) { if (\XMLReader::ELEMENT === $this->xml->nodeType) { switch ($this->xml->name) { case 'row': $currentKey = (int) $this->xml->getAttribute('r'); $rowBuilder = $this->rowBuilderFactory->create(); break; case 'c': $columnIndex = $this->columnIndexTransformer->transform($this->xml->getAttribute('r')); $style = $this->getValue($this->xml->getAttribute('s')); $type = $this->getValue($this->xml->getAttribute('t')); break; case 'v': $rowBuilder->addValue($columnIndex, $this->valueTransformer->transform($this->xml->readString(), $type, $style)); break; case 'is': $rowBuilder->addValue($columnIndex, $this->xml->readString()); break; } } elseif (\XMLReader::END_ELEMENT === $this->xml->nodeType) { switch ($this->xml->name) { case 'row': $currentValue = $rowBuilder->getData(); if (count($currentValue)) { $this->currentKey = $currentKey; $this->currentValue = $currentValue; $this->valid = true; return; } break; case 'sheetData': break 2; } } } }
/** * Tests JFeedParser::moveToNextElement() * * @return void * * @since 12.3 */ public function testMoveToNextElement() { // Set the XML for the internal reader and move the stream to the <root> element. $this->_reader->Xml('<root><node test="first"><child>foobar</child></node><node test="second"></node></root>'); $this->_reader->next('root'); // Ensure that the current node is "root". $this->assertEquals('root', $this->_reader->name); // Move to the next element, which should be <node test="first">. TestReflection::invoke($this->_instance, 'moveToNextElement'); $this->assertEquals('node', $this->_reader->name); $this->assertEquals('first', $this->_reader->getAttribute('test')); // Move to the next element, which should be <child> with a data value of "foobar". TestReflection::invoke($this->_instance, 'moveToNextElement'); $this->assertEquals('child', $this->_reader->name); $this->assertEquals('foobar', $this->_reader->readString()); // Move to the next element, which should be <node test="second">. TestReflection::invoke($this->_instance, 'moveToNextElement'); $this->assertEquals('node', $this->_reader->name); $this->assertEquals('second', $this->_reader->getAttribute('test')); // Move to the next element, which should be <node test="second">. $return = TestReflection::invoke($this->_instance, 'moveToNextElement'); $this->assertFalse($return); }
/** * Чтение элементов из \XMLReader * @param \XMLReader $xr */ public function elementsFromXmlReader(\XMLReader &$xr) { switch ($xr->localName) { case "autouid": $this->setAutouid($xr->readString()); break; case "ID": $this->setID($xr->readString()); break; case "source": $this->setSource($xr->readString()); break; case "destination": $this->setDestination($xr->readString()); break; case "dtStart": $this->setDtStart($xr->readString()); break; case "dtEnd": $this->setDtEnd($xr->readString()); break; case "type": $this->setType($xr->readString()); break; case "comments": $this->setComments($xr->readString()); break; case "Ref": $Ref = \Adaptor_Bindings::create("\\Archive\\Port\\Adaptor\\Data\\Archive\\Refs\\Ref"); $this->setRef($Ref->fromXmlReader($xr)); break; default: parent::elementsFromXmlReader($xr); } }
/** * Чтение элементов из \XMLReader * @param \XMLReader $xr */ public function elementsFromXmlReader(\XMLReader &$xr) { switch ($xr->localName) { case "x": $this->setX($xr->readString()); break; case "y": $this->setY($xr->readString()); break; case "width": $this->setWidth($xr->readString()); break; case "height": $this->setHeight($xr->readString()); break; case "Ref": $Ref = \Adaptor_Bindings::create("\\Archive\\Port\\Adaptor\\Data\\Archive\\Refs\\Ref"); $this->setRef($Ref->fromXmlReader($xr)); break; default: parent::elementsFromXmlReader($xr); } }
while ($reader->read()) { if ($reader->nodeType == XMLREADER::ELEMENT && array_search($reader->name, $field_keys)) { $nodeName = $reader->name; $readThrough[] = $nodeName; if ($nodeName === "Author") { $authorIndex++; } } if ($reader->nodeType == XMLREADER::END_ELEMENT && array_search($reader->name, $field_keys)) { array_pop($readThrough); $nodeName = $readThrough[count($readThrough) - 1]; } if ($reader->nodeType == XMLREADER::ELEMENT && count($readThrough) > 0) { if (in_array($reader->name, $fieldsArray[$nodeName])) { if ($nodeName === "PubDate") { $record_data["pubDate"][$reader->name] = $reader->readString(); } if ($nodeName === "DateCreated") { $record_data["creationDate"][$reader->name] = $reader->readString(); } if ($nodeName === "Author") { $record_data["authorList"][$authorIndex][$reader->name] = $reader->readString(); } if ($nodeName === "ArticleIdList") { if ($reader->name === "ArticleId") { $record_data["idList"][$reader->getAttribute("IdType")] = $reader->readString(); } } if (in_array($reader->name, array_keys($recordFields))) { $record_data[$recordFields[$reader->name]] = $reader->readString(); }
public function getRecentSMS() { $html = ''; $json = ''; $returnJSON = array(); $returnJSON['SMS'] = array(); // $params = $this->getBaseParams(); $session = $this->getCurlGet($this->gvBaseURL . 'inbox/recent/sms?auth=' . $this->authToken); $result = curl_exec($session); // echo $result; $xml = new XMLReader(); $xml->xml($result); $xml->read(); if ($xml->name == 'response') { $xml->read(); $xml->next('json'); if ($xml->name == 'json') { $json = $xml->readString(); $returnJSON['SMS']['data'] = json_decode($json, true); } $xml->next('html'); // echo "name: " . $xml->name . " end"; if ($xml->name == 'html') { // echo 'html: ' > $xml->readString(); // echo "in HTML"; // echo $xml->readString(); $html = $xml->readString(); } } $returnJSON['SMS']['data']['messagesByNumber'] = array(); if (strlen($html) > 0) { $dom = new DOMDocument(); // $smsData = array('conversations'=>array()); if (@$dom->loadHTML($html)) { // echo $dom->saveHTML(); $xpath = new DOMXPath($dom); $conversations = $xpath->query('//div[contains(@class, " gc-message ")]'); $convo = array(); // for ($citer = 0; $citer < $conversations->length; $citer++) {//$conversations as $conversation) { for ($citer = $conversations->length - 1; $citer >= 0; $citer--) { $conversation = $conversations->item($citer); // echo $entry->textContent . '<br>'; // echo $conversation->textContent; $conversationID = $conversation->attributes->getNamedItem('id')->value; $contactInfo = $xpath->query('div//a[contains(@class, "gc-message-name-link")]', $conversation); $contactName = $contactInfo->item(0)->textContent; $returnJSON['SMS']['data']['messages'][$conversationID]['contactName'] = $contactName; $contactNumber = $returnJSON['SMS']['data']['messages'][$conversationID]['phoneNumber']; if (!$returnJSON['SMS']['data']['messagesByNumber'][$contactNumber]) { $returnJSON['SMS']['data']['messagesByNumber'][$contactNumber] = array(); $returnJSON['SMS']['data']['messagesByNumber'][$contactNumber]['meta'] = array('contactName' => $contactName, 'displayNumber' => $returnJSON['SMS']['data']['messages'][$conversationID]['displayNumber']); $returnJSON['SMS']['data']['messagesByNumber'][$contactNumber]['messages'] = array(); } $msgJSON = array('from' => 'TIME_CHANGE', 'text' => $returnJSON['SMS']['data']['messages'][$conversationID]['displayStartDateTime'], 'time' => ''); array_push($returnJSON['SMS']['data']['messagesByNumber'][$contactNumber]['messages'], $msgJSON); $messages = $xpath->query('div//div[contains(@class, "gc-message-sms-row")]', $conversation); for ($miter = 0; $miter < $messages->length; $miter++) { // ($messages as $message) { $message = $messages->item($miter); $from = trim($message->childNodes->item(1)->textContent); $text = $message->childNodes->item(3)->textContent; $time = trim($message->childNodes->item(5)->textContent); $messageJSON = array('from' => $from, 'text' => $text, 'time' => $time); array_push($convo, $messageJSON); array_push($returnJSON['SMS']['data']['messagesByNumber'][$contactNumber]['messages'], $messageJSON); // echo "Message: " . $from . " " . $text . " " . $time . "<br>"; } // echo "<br><br>"; // array_push($smsData['conversations'], $convo); // echo $conversationID; $returnJSON['SMS']['data']['messages'][$conversationID]['messages'] = $convo; $convo = array(); } // $returnJSON['SMS']['data'] = $smsData; } } return json_encode($returnJSON); }
/** * Function for parsing XML file of repository * * This function parses XML file and updates database used for searching. * @param string last modified date * @param string URL of OL repository */ function parse($date, $urlforrepo, $baseurl) { //create object of class XMLReader for reading XML file $xml = new XMLReader(); //Parsing may take a few minutes because OL repository is quite large. @set_time_limit(0); global $db; //open XML file $xml->open($urlforrepo . "&from=" . $date . "T00:00:00Z"); //$xml->open("oai2.php.xml"); $members = array(); //main array which will contain all entries of repo. $flag = false; $resumption = 'dummy'; //resumption token of repository //parse while resumption token is not null. while ($resumption != '') { if ($resumption == 'dummy') { $xml->open($urlforrepo . "&from=" . $date . "T00:00:00Z"); $resumption = ''; } else { $xml->open($baseurl . 'verb=ListRecords&resumptionToken=' . $resumption); } //main logic starts while ($xml->read()) { if ($xml->nodeType == XMLReader::ELEMENT && $xml->localName == 'error') { //error in parsing $resumption = ''; } if ($xml->nodeType == XMLReader::ELEMENT && $xml->localName == 'record') { //starting of a new record $member = array(); $flag = false; //$member['uni']=''; } //starting tag of identifier if ($xml->nodeType == XMLReader::ELEMENT && $xml->localName == 'identifier' && !isset($member['identifier'])) { $member['identifier'] = addslashes(trim($xml->readString())); } //starting tag of datestamp if ($xml->nodeType == XMLReader::ELEMENT && $xml->localName == 'datestamp' && !isset($member['datestamp'])) { $member['datestamp'] = addslashes(trim($xml->readString())); } //starting tag of entry if ($xml->nodeType == XMLReader::ELEMENT && $xml->localName == 'entry' && !isset($member['entry'])) { $member['entry'] = trim($xml->readString()); } //starting tag of catalog if ($xml->nodeType == XMLReader::ELEMENT && $xml->localName == 'catalog' && !isset($member['catalog'])) { $member['catalog'] = addslashes(trim($xml->readString())); } //starting tag of description if ($xml->nodeType == XMLReader::ELEMENT && $xml->localName == 'description' && !isset($member['description'])) { $tag1 = ''; while ($tag1 != 'title') { $xml->read(); $tag1 = $xml->localName; } $member['title'] = addslashes(trim($xml->readString())); while ($tag1 != 'description') { $xml->read(); $tag1 = $xml->localName; } $member['description'] = addslashes(trim($xml->readString())); $member['keywords'] = ''; } //starting tag of keyword if ($xml->nodeType == XMLReader::ELEMENT && $xml->localName == 'keyword' && !$flag) { $member['keywords'] .= addslashes(trim($xml->readString())) . ", "; } if ($xml->nodeType == XMLReader::END_ELEMENT && $xml->localName == 'general') { $flag = true; rtrim($member['keywords']); $member['keywords'] = substr($member['keywords'], 0, strlen($member['keywords']) - 2); } if ($xml->nodeType == XMLReader::ELEMENT && $xml->localName == 'manifestation') { $data = $xml->readString(); $tag = ''; if (strpos($data, 'web site') > 0) { //echo 'case 1<br/>'; while ($tag != 'location') { $xml->read(); $tag = $xml->localName; } $member['website'] = trim($xml->readString()); } else { if (strpos($data, 'Common Cartridge') > 0) { //echo 'case 2<br/>'; while ($tag != 'location') { $xml->read(); $tag = $xml->localName; } $member['common'] = trim($xml->readString()); } else { if (strpos($data, 'Content Package') > 0) { //echo 'case 3<br/>'; while ($tag != 'location') { $xml->read(); $tag = $xml->localName; } $member['package'] = trim($xml->readString()); } } } } //record ends insert record to the main array if ($xml->nodeType == XMLReader::END_ELEMENT && $xml->localName == 'record') { $members[] = $member; if ($resumption == 'dummy') { $resumption = ''; } } if ($xml->nodeType == XMLReader::ELEMENT && $xml->localName == 'resumptionToken') { $resumption = $xml->readString(); } } } $res = ''; //insert or update records in database if (count($members) > 0) { //define('AT_INCLUDE_PATH', '../../include/'); //require (AT_INCLUDE_PATH.'vitals.inc.php'); $qry = "SELECT * FROM " . TABLE_PREFIX . "ol_search_open_learn"; $result = mysql_query($qry, $db); //index starts from last number of record in database + 1 $index = mysql_num_rows($result) + 1; foreach ($members as $member) { $qry = "SELECT * FROM " . TABLE_PREFIX . "ol_search_open_learn where ENTRY='" . $member['entry'] . "' "; //try to get record from database having same entry $result = mysql_query($qry, $db); //if record exists in database then update it else insert it in database if (mysql_num_rows($result) > 0) { $qry = "UPDATE " . TABLE_PREFIX . "ol_search_open_learn SET DATESTAMP='" . $member['datestamp'] . "' , CATALOG='" . $member['catalog'] . "' , TITLE='" . $member['title'] . "' , DESCRIPTION='" . $member['description'] . "' , \tKEYWORDS='" . $member['keywords'] . "' ," . " WEBSITE='" . $member['website'] . "' , CC='" . $member['common'] . "' , CP='" . $member['package'] . "' WHERE ENTRY='" . $member['entry'] . "'"; } else { $qry = 'INSERT INTO ' . TABLE_PREFIX . 'ol_search_open_learn VALUES (' . $index . ',"' . $member['identifier'] . '","' . $member['datestamp'] . '","' . $member['catalog'] . '","' . $member['entry'] . '","' . $member['title'] . '","' . $member['description'] . '","' . $member['keywords'] . '","' . $member['website'] . '","' . $member['common'] . '","' . $member['package'] . '")'; $index++; } $tmp = "Success"; if (mysql_query($qry, $db)) { $tmp = "Success"; } else { echo $qry; exit; $tmp = "Failed"; } } } define('AT_INCLUDE_PATH', '../../include/'); require_once AT_INCLUDE_PATH . '/classes/Message/Message.class.php'; global $savant; //feedback messsage for admin $msg = new Message($savant); //change date of last updation if ($tmp != "Failed") { $qry = "UPDATE " . TABLE_PREFIX . "config SET value=CURDATE() WHERE name='ol_last_updation'"; $feedback = array('OL_DB_UPDATED'); $msg->addFeedback($feedback); mysql_query($qry, $db); $qry = "UPDATE " . TABLE_PREFIX . "config SET value='" . time() . "' WHERE name='ol_last_time'"; mysql_query($qry, $db); } else { $msg->addError('OL_DB_NOT_UPDATED'); } }
/** * * @expectedException PHPUnit_Framework_Error * XMLReader::read(): I/O warning : failed to load external entity "file:///C:/Christopher_Spaeth/code/xml_files_windows/xxe.txt" */ public function testXXE_setParserProperty_SUBST_ENTITIES_disable_entity_loader() { $xml = new XMLReader(); // use setParserProperty $xml->open("../../xml_files_windows/xxe/xxe.xml"); $xml->setParserProperty(XMLReader::SUBST_ENTITIES, true); libxml_disable_entity_loader(true); while ($xml->read()) { if ($xml->nodeType == XMLReader::ELEMENT && $xml->name == 'data') { $node = $xml->name; $content = $xml->readString(); } } $content = preg_replace('/\\s+/', '', $content); $this->assertEquals("", $content); }
/** * Чтение элементов из \XMLReader * @param \XMLReader $xr */ public function elementsFromXmlReader(\XMLReader &$xr) { switch ($xr->localName) { case "id": $this->setId($xr->readString()); break; case "userId": $this->setUserId($xr->readString()); break; case "code": $this->setCode($xr->readString()); break; case "word": $this->setWord($xr->readString()); break; case "cAttempts": $this->setCAttempts($xr->readString()); break; case "tAttempts": $this->setTAttempts($xr->readString()); break; case "fAttempts": $this->setFAttempts($xr->readString()); break; case "status": $this->setStatus($xr->readString()); break; case "lastmod": $this->setLastmod($xr->readString()); break; default: parent::elementsFromXmlReader($xr); } }
/** * Чтение элементов из \XMLReader * @param \XMLReader $xr */ public function elementsFromXmlReader(\XMLReader &$xr) { switch ($xr->localName) { case "id": $this->setId($xr->readString()); break; case "firstName": $this->setFirstName($xr->readString()); break; case "email": $this->setEmail($xr->readString()); break; case "gender": $this->setGender($xr->readString()); break; case "lastName": $this->setLastName($xr->readString()); break; case "link": $this->setLink($xr->readString()); break; case "locale": $this->setLocale($xr->readString()); break; case "name": $this->setName($xr->readString()); break; case "timezone": $this->setTimezone($xr->readString()); break; case "updatedTime": $this->setUpdatedTime($xr->readString()); break; case "verified": $this->setVerified($xr->readString()); break; default: parent::elementsFromXmlReader($xr); } }
/** * Function for parsing XML file of repository * * This function parses XML file and creates initial database used for searching. * It may work on both online and offline modes. If internet connection is not * available then XML file attached in the module is used. * */ function parse() { //create object of class XMLReader for reading XML file $xml = new XMLReader(); //Parsing may take a few minutes because OL repository is quite large. @set_time_limit(0); global $db; $connS = false; //Find internet connection's status $conn = checkConnection(); $op = ''; if ($conn) { //internet connection is available so we can directly parse using URL $connS = true; $xml->open("http://openlearn.open.ac.uk/local/oai/oai2.php?verb=ListRecords&metadataPrefix=oai_ilox"); $op = '1'; } else { $connS = false; //internet connection is unavailable so we need to use repository's offline version $xml->open("../../ol_search_open_learn/oai2.php.xml"); $op = '2'; } $members = array(); //main array which will contain all entries of repo. $flag = false; $resumption = 'dummy'; //resumption token of repository //parse while resumption token is not null. while ($resumption != '') { if ($resumption == 'dummy' && $connS) { //if this is first iteration then use following URL $xml->open('http://openlearn.open.ac.uk/local/oai/oai2.php?verb=ListRecords&metadataPrefix=oai_ilox'); $resumption = ''; } else { if ($connS) { //if this is not first URL then use resumption token of last page $xml->open('http://openlearn.open.ac.uk/local/oai/oai2.php?verb=ListRecords&resumptionToken=' . $resumption); } } //main logic of parsing while ($xml->read()) { if ($xml->nodeType == XMLReader::ELEMENT && $xml->localName == 'record') { //starting of a new record $member = array(); $flag = false; //$member['uni']=''; } //starting tag of identifier if ($xml->nodeType == XMLReader::ELEMENT && $xml->localName == 'identifier' && !isset($member['identifier'])) { $member['identifier'] = addslashes(trim($xml->readString())); } //starting tag of datestamp if ($xml->nodeType == XMLReader::ELEMENT && $xml->localName == 'datestamp' && !isset($member['datestamp'])) { $member['datestamp'] = addslashes(trim($xml->readString())); } //starting tag of entry if ($xml->nodeType == XMLReader::ELEMENT && $xml->localName == 'entry' && !isset($member['entry'])) { $member['entry'] = trim($xml->readString()); } //starting tag of catalog if ($xml->nodeType == XMLReader::ELEMENT && $xml->localName == 'catalog' && !isset($member['catalog'])) { $member['catalog'] = addslashes(trim($xml->readString())); } //starting tag of description if ($xml->nodeType == XMLReader::ELEMENT && $xml->localName == 'description' && !isset($member['description'])) { $tag1 = ''; while ($tag1 != 'title') { $xml->read(); $tag1 = $xml->localName; } $member['title'] = addslashes(trim($xml->readString())); while ($tag1 != 'description') { $xml->read(); $tag1 = $xml->localName; } $member['description'] = addslashes(trim($xml->readString())); $member['keywords'] = ''; } //starting tag of keywords if ($xml->nodeType == XMLReader::ELEMENT && $xml->localName == 'keyword' && !$flag) { $member['keywords'] .= addslashes(trim($xml->readString())) . ", "; } if ($xml->nodeType == XMLReader::END_ELEMENT && $xml->localName == 'general') { $flag = true; rtrim($member['keywords']); $member['keywords'] = substr($member['keywords'], 0, strlen($member['keywords']) - 2); } if ($xml->nodeType == XMLReader::ELEMENT && $xml->localName == 'manifestation') { $data = $xml->readString(); $tag = ''; if (strpos($data, 'web site') > 0) { //echo 'case 1<br/>'; while ($tag != 'location') { $xml->read(); $tag = $xml->localName; } $member['website'] = trim($xml->readString()); } else { if (strpos($data, 'Common Cartridge') > 0) { //echo 'case 2<br/>'; while ($tag != 'location') { $xml->read(); $tag = $xml->localName; } $member['common'] = trim($xml->readString()); } else { if (strpos($data, 'Content Package') > 0) { //echo 'case 3<br/>'; while ($tag != 'location') { $xml->read(); $tag = $xml->localName; } $member['package'] = trim($xml->readString()); } } } } //record ends insert record to the main array if ($xml->nodeType == XMLReader::END_ELEMENT && $xml->localName == 'record') { $members[] = $member; } //read resumption token if ($connS && $xml->nodeType == XMLReader::ELEMENT && $xml->localName == 'resumptionToken') { $resumption = $xml->readString(); } } if (!$connS) { //if in offline mode then only one iteration is needed break; } } $res = ''; $index = 1; //enter records in database if (count($members) > 0) { foreach ($members as $member) { $qry = 'INSERT INTO ' . TABLE_PREFIX . 'ol_search_open_learn VALUES (' . $index . ',"' . $member['identifier'] . '","' . $member['datestamp'] . '","' . $member['catalog'] . '","' . $member['entry'] . '","' . $member['title'] . '","' . $member['description'] . '","' . $member['keywords'] . '","' . $member['website'] . '","' . $member['common'] . '","' . $member['package'] . '")'; $index++; if (mysql_query($qry, $db)) { $tmp = "Success"; } else { $tmp = "Failed"; } } } //enter date when database last updated in config table which will be used by admin later on if ($connS) { //online mode $qry = "UPDATE " . TABLE_PREFIX . "config SET value=CURDATE() WHERE name='ol_last_updation'"; } else { //offline mode $qry = "UPDATE " . TABLE_PREFIX . "config SET value='2011-06-28' WHERE name='ol_last_updation'"; } mysql_query($qry, $db); //insert current time of installation in database $qry = "INSERT INTO " . TABLE_PREFIX . "config VALUES ('ol_last_time','" . time() . "')"; mysql_query($qry, $db); }
function odt2html($odt_file, $xml_string = NULL) { global $_ophir_odt_import_conf; $xml = new XMLReader(); if ($xml_string === NULL) { if (@$xml->open('zip://' . $odt_file . '#content.xml') === FALSE) { ophir_error("Unable to read file contents."); return false; } } else { if (@$xml->xml($xml_string) === FALSE) { ophir_error("Invalid file contents."); return false; } } //Now, convert the xml from a string to an $html = ""; $elements_tree = array(); static $styles = array("Quotations" => array("tags" => array("blockquote"))); $footnotes = ""; $translation_table = array(); $translation_table['draw:frame'] = 'div class="odt-frame"'; if ($_ophir_odt_import_conf["features"]["list"] === 0) { $translation_table["text:list"] = FALSE; } elseif ($_ophir_odt_import_conf["features"]["list"] === 2) { $translation_table["text:list"] = "ul"; $translation_table["text:list-item"] = "li"; } if ($_ophir_odt_import_conf["features"]["table"] === 0) { $translation_table["table:table"] = FALSE; } elseif ($_ophir_odt_import_conf["features"]["table"] === 2) { $translation_table["table:table"] = "table cellspacing=0 cellpadding=0 border=1"; $translation_table["table:table-row"] = "tr"; $translation_table["table:table-cell"] = "td"; } if ($_ophir_odt_import_conf["features"]["table of contents"] === 0) { $translation_table['text:table-of-content'] = FALSE; } elseif ($_ophir_odt_import_conf["features"]["table of contents"] === 2) { $translation_table['text:table-of-content'] = 'div class="odt-table-of-contents"'; } $translation_table['text:line-break'] = 'br'; while ($xml->read()) { $opened_tags = array(); //This array will contain the HTML tags opened in every iteration if ($xml->nodeType === XMLReader::END_ELEMENT) { //Handle a closing tag if (empty($elements_tree)) { continue; } do { $element = array_pop($elements_tree); if ($element && $element["tags"]) { //Close opened tags $element["tags"] = array_reverse($element["tags"]); foreach ($element["tags"] as $HTML_tag) { //$html.= "<font style='color:red' title='Closing $HTML_tag, from $element[name]. Current element is " .($xml->name). "'>©</font>"; $HTML_tag = current(explode(" ", $HTML_tag)); $html .= "</" . $HTML_tag . ">"; } } } while ($xml->name !== $element["name"] && $element); //Close every opened tags. This should also handle malformed XML files continue; } elseif (in_array($xml->nodeType, array(XMLReader::ELEMENT, XMLReader::TEXT, XMLReader::SIGNIFICANT_WHITESPACE))) { //Handle tags switch ($xml->name) { case "#text": //Text $html .= htmlspecialchars($xml->value); break; case "text:h": //Title if ($_ophir_odt_import_conf["features"]["header"] === 0) { $xml->next(); break; } elseif ($_ophir_odt_import_conf["features"]["header"] === 1) { break; } $n = $xml->getAttribute("text:outline-level"); if ($n > 6) { $n = 6; } $opened_tags[] = "h{$n}"; $html .= "\n\n<h{$n}>"; break; case "text:p": //Paragraph //Just convert odf <text:p> to html <p> $tags = @$styles[$xml->getAttribute("text:style-name")]["tags"]; if (!($tags && !in_array("blockquote", $tags))) { // Do not print a <p> immediatly after or before a <blockquote> $opened_tags[] = "p"; $html .= "\n<p>"; } break; case "text:a": if ($_ophir_odt_import_conf["features"]["link"] === 0) { $xml->next(); break; } elseif ($_ophir_odt_import_conf["features"]["link"] === 1) { break; } $href = $xml->getAttribute("xlink:href"); $opened_tags[] = 'a'; $html .= '<a href="' . $href . '">'; break; case "draw:image": if ($_ophir_odt_import_conf["features"]["image"] === 0) { $xml->next(); break; } elseif ($_ophir_odt_import_conf["features"]["image"] === 1) { break; } $image_file = 'zip://' . $odt_file . '#' . $xml->getAttribute("xlink:href"); if (isset($_ophir_odt_import_conf["images_folder"]) && is_dir($_ophir_odt_import_conf["images_folder"])) { if (ophir_is_image($image_file)) { $image_to_save = $_ophir_odt_import_conf["images_folder"] . '/' . basename($image_file); if (!($src = ophir_copy_file($image_file, $image_to_save))) { ophir_error("Unable to move image file"); break; } } else { ophir_error("Found invalid image file."); break; } } else { //ophir_error('Unable to save the image. Creating a data URL. Image saved directly in the body.F'); $src = 'data:image;base64,' . base64_encode(file_get_contents($image_file)); } $html .= "\n<img src=\"{$src}\" />"; break; case "style:style": $name = $xml->getAttribute("style:name"); $parent = $xml->getAttribute("style:parent-style-name"); if (array_key_exists($parent, $styles)) { $styles[$name] = $styles[$parent]; } //Not optimal if ($xml->isEmptyElement) { break; } //We can't handle that at the moment while ($xml->read() && ($xml->name != "style:style" || $xml->nodeType != XMLReader::END_ELEMENT)) { if ($xml->name == "style:text-properties") { if ($xml->getAttribute("fo:font-style") == "italic") { $styles[$name]["tags"][] = "em"; } //Creates the style and add <em> to its tags if ($xml->getAttribute("fo:font-weight") == "bold") { $styles[$name]["tags"][] = "strong"; } //Creates the style and add <strong> to its tags if ($xml->getAttribute("style:text-underline-style") == "solid") { $styles[$name]["tags"][] = "u"; } //Creates the style and add <u> to its tags } } break; case "text:note": if ($_ophir_odt_import_conf["features"]["note"] === 0) { $xml->next(); break; } elseif ($_ophir_odt_import_conf["features"]["note"] === 1) { break; } $note_id = $xml->getAttribute("text:id"); $note_name = "Note"; while ($xml->read() && ($xml->name != "text:note" || $xml->nodeType != XMLReader::END_ELEMENT)) { if ($xml->name == "text:note-citation" && $xml->nodeType == XMLReader::ELEMENT) { $note_name = $xml->readString(); } elseif ($xml->name == "text:note-body" && $xml->nodeType == XMLReader::ELEMENT) { $note_content = odt2html($odt_file, $xml->readOuterXML()); } } $html .= "<sup><a href=\"#odt-footnote-{$note_id}\" class=\"odt-footnote-anchor\" name=\"anchor-odt-{$note_id}\">{$note_name}</a></sup>"; $footnotes .= "\n" . '<div class="odt-footnote" id="odt-footnote-' . $note_id . '" >'; $footnotes .= '<a class="footnote-name" href="#anchor-odt-' . $note_id . '">' . $note_name . ' .</a> '; $footnotes .= $note_content; $footnotes .= '</div>' . "\n"; break; case "office:annotation": if ($_ophir_odt_import_conf["features"]["annotation"] === 0) { $xml->next(); break; } elseif ($_ophir_odt_import_conf["features"]["annotation"] === 1) { break; } $annotation_id = isset($annotation_id) ? $annotation_id + 1 : 1; $annotation_content = ""; $annotation_creator = "Anonymous"; $annotation_date = ""; do { $xml->read(); if ($xml->name == "dc:creator" && $xml->nodeType == XMLReader::ELEMENT) { $annotation_creator = $xml->readString(); } elseif ($xml->name == "dc:date" && $xml->nodeType == XMLReader::ELEMENT) { $annotation_date = date("jS \\of F Y, H\\h i\\m", strtotime($xml->readString())); } elseif ($xml->nodeType == XMLReader::ELEMENT) { $annotation_content .= $xml->readString(); $xml->next(); } } while (!($xml->name === "office:annotation" && $xml->nodeType === XMLReader::END_ELEMENT)); //End of the note $html .= '<sup><a href="#odt-annotation-' . $annotation_id . '" name="anchor-odt-annotation-' . $annotation_id . '" title="Annotation (' . $annotation_creator . ')">(' . $annotation_id . ')</a></sup>'; $footnotes .= "\n" . '<div class="odt-annotation" id="odt-annotation-' . $annotation_id . '" >'; $footnotes .= '<a class="annotation-name" href="#anchor-odt-annotation-' . $annotation_id . '"> (' . $annotation_id . ') </a>'; $footnotes .= "\n" . '<b>' . $annotation_creator . ' (<i>' . $annotation_date . '</i>)</b> :'; $footnotes .= "\n" . '<div class="odt-annotation-content">' . $annotation_content . '</div>'; $footnotes .= '</div>' . "\n"; break; default: if (array_key_exists($xml->name, $translation_table)) { if ($translation_table[$xml->name] === FALSE) { $xml->next(); break; } $tag = explode(" ", $translation_table[$xml->name], 1); //$tag[0] is the tag name, other indexes are attributes $opened_tags[] = $tag[0]; $html .= "\n<" . $translation_table[$xml->name] . ">"; } } } if ($xml->nodeType === XMLReader::ELEMENT && !$xml->isEmptyElement) { //Opening tag $current_element_style = $xml->getAttribute("text:style-name"); if ($current_element_style && isset($styles[$current_element_style])) { //Styling tags management foreach ($styles[$current_element_style]["tags"] as $HTML_tag) { $html .= "<" . $HTML_tag . ">"; $opened_tags[] = $HTML_tag; } } $elements_tree[] = array("name" => $xml->name, "tags" => $opened_tags); } } return $html . $footnotes; }
/** * Чтение элементов из \XMLReader * @param \XMLReader $xr */ public function elementsFromXmlReader(\XMLReader &$xr) { switch ($xr->localName) { case "src": $this->setSrc($xr->readString()); break; case "width": $this->setWidth($xr->readString()); break; case "height": $this->setHeight($xr->readString()); break; case "size": $this->setSize($xr->readString()); break; default: parent::elementsFromXmlReader($xr); } }
/** * Update the database. */ protected function updateDatabase($strZipPath) { $arrError = array(); // New archive $objZipArchive = new ZipArchiveCto(); // Open archive if (($mixError = $objZipArchive->open($strZipPath, ZipArchiveCto::CREATE)) !== true) { throw new Exception($GLOBALS['TL_LANG']['MSC']['error'] . ": " . $objZipArchive->getErrorDescription($mixError)); } // Read XML $xmlReader = new XMLReader(); $xmlReader->XML($objZipArchive->getFromName("SQL/sql.xml")); // Init tmp vars $strTableName = ""; $arrFieldList = array(); $arrDefList = array(); $strOptions = array(); while ($xmlReader->read()) { switch ($xmlReader->nodeType) { case XMLReader::ELEMENT: switch ($xmlReader->localName) { case "table": $strTableName = $xmlReader->getAttribute("name"); $arrFieldList = array(); $arrDefList = array(); break; case "field": $arrFieldList[$xmlReader->getAttribute("name")] = $xmlReader->readString(); break; case "def": $arrDefList[$xmlReader->getAttribute("name")] = $xmlReader->readString(); break; case "option": $strOptions = $xmlReader->readString(); break; } break; case XMLReader::END_ELEMENT: switch ($xmlReader->localName) { case "table": $mixResult = $this->compareDatabase($strTableName, $arrFieldList, $arrDefList, $strOptions); if ($mixResult !== true && is_array($mixResult)) { $arrError = array_merge($arrError, $mixResult); } break; } break; } } if (count($arrError) == 0) { return true; } else { return $arrError; } }
/** * debug utility method * * @param XMLReader $reader * @param bool $return (optional) prints by default but can return string * @return string|null */ public static function dump(XMLReader $reader, $return = FALSE) { $node = new self($reader); $nodeType = $reader->nodeType; $nodeName = $node->getNodeTypeName(); $extra = ''; if ($reader->nodeType === XMLReader::ELEMENT) { $extra = '<' . $reader->name . '> '; $extra .= sprintf("(isEmptyElement: %s) ", $reader->isEmptyElement ? 'Yes' : 'No'); } if ($reader->nodeType === XMLReader::END_ELEMENT) { $extra = '</' . $reader->name . '> '; } if ($reader->nodeType === XMLReader::ATTRIBUTE) { $str = $reader->value; $len = strlen($str); if ($len > 20) { $str = substr($str, 0, 17) . '...'; } $str = strtr($str, array("\n" => '\\n')); $extra = sprintf('%s = (%d) "%s" ', $reader->name, strlen($str), $str); } if ($reader->nodeType === XMLReader::TEXT || $reader->nodeType === XMLReader::WHITESPACE || $reader->nodeType === XMLReader::SIGNIFICANT_WHITESPACE) { $str = $reader->readString(); $len = strlen($str); if ($len > 20) { $str = substr($str, 0, 17) . '...'; } $str = strtr($str, array("\n" => '\\n')); $extra = sprintf('(%d) "%s" ', strlen($str), $str); } $label = sprintf("(#%d) %s %s", $nodeType, $nodeName, $extra); if ($return) { return $label; } printf("%s%s\n", str_repeat(' ', $reader->depth), $label); return null; }
/** * Merges a parameter into the list of parameters read for the report. Updates existing * ones if there is a name match. * @todo Review the handling of $this->surveyParam */ private function mergeParam($name, $reader = null) { // Some parts of the code assume the survey will be identified by a parameter called survey or survey_id. if ($name === 'survey_id' || $name === 'survey') { $this->surveyParam = $name; } $display = $reader === null ? '' : $reader->getAttribute('display'); $type = $reader === null ? '' : $reader->getAttribute('datatype'); $allow_buffer = $reader === null ? '' : $reader->getAttribute('allow_buffer'); $fieldname = $reader === null ? '' : $reader->getAttribute('fieldname'); $alias = $reader === null ? '' : $reader->getAttribute('alias'); $emptyvalue = $reader === null ? '' : $reader->getAttribute('emptyvalue'); $default = $reader === null ? null : $reader->getAttribute('default'); $description = $reader === null ? '' : $reader->getAttribute('description'); $query = $reader === null ? '' : $reader->getAttribute('query'); $lookup_values = $reader === null ? '' : $reader->getAttribute('lookup_values'); $population_call = $reader === null ? '' : $reader->getAttribute('population_call'); $linked_to = $reader === null ? '' : $reader->getAttribute('linked_to'); $linked_filter_field = $reader === null ? '' : $reader->getAttribute('linked_filter_field'); if (array_key_exists($name, $this->params)) { if ($display != '') { $this->params[$name]['display'] = $display; } if ($type != '') { $this->params[$name]['datatype'] = $type; } if ($allow_buffer != '') { $this->params[$name]['allow_buffer'] = $allow_buffer; } if ($fieldname != '') { $this->params[$name]['fieldname'] = $fieldname; } if ($alias != '') { $this->params[$name]['alias'] = $alias; } if ($emptyvalue != '') { $this->params[$name]['emptyvalue'] = $emptyvalue; } if ($default != null) { $this->params[$name]['default'] = $default; } if ($description != '') { $this->params[$name]['description'] = $description; } if ($query != '') { $this->params[$name]['query'] = $query; } if ($lookup_values != '') { $this->params[$name]['lookup_values'] = $lookup_values; } if ($population_call != '') { $this->params[$name]['population_call'] = $population_call; } if ($linked_to != '') { $this->params[$name]['linked_to'] = $linked_to; } if ($linked_filter_field != '') { $this->params[$name]['linked_filter_field'] = $linked_filter_field; } } else { $this->params[$name] = array('datatype' => $type, 'allow_buffer' => $allow_buffer, 'fieldname' => $fieldname, 'alias' => $alias, 'emptyvalue' => $emptyvalue, 'default' => $default, 'display' => $display, 'description' => $description, 'query' => $query, 'lookup_values' => $lookup_values, 'population_call' => $population_call, 'linked_to' => $linked_to, 'linked_filter_field' => $linked_filter_field); } // if we have a default value, keep a list if (isset($this->params[$name]['default']) && $this->params[$name]['default'] !== null) { $this->defaultParamValues[$name] = $this->params[$name]['default']; } // Does the parameter define optional join elements which are associated with specific parameter values? if ($reader !== null) { $paramXml = $reader->readInnerXML(); if (!empty($paramXml)) { $reader = new XMLReader(); // wrap contents of param in a container so we only have 1 top level node $reader->XML("<container>{$paramXml}</container>"); while ($reader->read()) { if ($reader->nodeType == XMLREADER::ELEMENT && $reader->name == 'join') { if (!isset($this->params[$name]['joins'])) { $this->params[$name]['joins'] = array(); } $this->params[$name]['joins'][] = array('value' => $reader->getAttribute('value'), 'operator' => $reader->getAttribute('operator'), 'sql' => $reader->readString()); } if ($reader->nodeType == XMLREADER::ELEMENT && $reader->name == 'where') { if (!isset($this->params[$name]['wheres'])) { $this->params[$name]['wheres'] = array(); } $this->params[$name]['wheres'][] = array('value' => $reader->getAttribute('value'), 'operator' => $reader->getAttribute('operator'), 'sql' => $reader->readString()); } } } } }
function _pugpig_package_parse_atom($atom_xml) { $atom_ret = array(); $manifest_urls = array(); $html_urls = array(); $edition_tag = ''; if ($atom_xml != '') { $atom = new XMLReader(); $atom->XML($atom_xml); while ($atom->read()) { if ($atom->localName == 'id' && $edition_tag == '') { $edition_tag = $atom->readString(); } elseif ($atom->localName == 'link') { $url = $atom->getAttribute('href'); $rel = $atom->getAttribute('rel'); $type = $atom->getAttribute('type'); switch ($rel) { case 'related': if ($type == "text/cache-manifest") { $manifest_urls[] = $url; } break; case 'alternate': if ($type == "text/html") { $html_urls[] = $url; } break; } } } $atom->close(); } $atom_ret['edition_tag'] = $edition_tag; $atom_ret['manifest_urls'] = $manifest_urls; $atom_ret['html_urls'] = $html_urls; return $atom_ret; }
/** * Чтение элементов из \XMLReader * @param \XMLReader $xr */ public function elementsFromXmlReader(\XMLReader &$xr) { switch ($xr->localName) { case "resource": $this->setResource($xr->readString()); break; default: parent::elementsFromXmlReader($xr); } }
public function import($file) { $objs = array(); $xml = new XMLReader(); $xml->open($file, 'UTF-8', LIBXML_NONET); if (!$xml) { return false; } $inmark = false; $innerRing = false; while (@$xml->read()) { if ($xml->nodeType == XMLReader::ELEMENT) { if ($xml->name == 'Placemark') { $inmark = true; } elseif ($xml->name == 'name') { if ($inmark) { $objtext = $xml->readString(); } else { $title = $xml->readString(); } } elseif ($xml->name == 'styleUrl') { $styleUrl = $xml->readString(); foreach ($this->colors as $k => $v) { if (strpos($styleUrl, $k) !== false) { $objcolor = $k; break; } } } elseif ($xml->name == 'innerBoundaryIs') { $innerRing = true; } elseif ($xml->name == 'coordinates' && !$innerRing) { $coordstr = preg_split('/\\s+/', trim($xml->readString())); $coords = array(); foreach ($coordstr as $latlon) { $ll = explode(',', $latlon); if (count($ll) >= 2) { $coords[] = array((double) $ll[1], (double) $ll[0]); } } } } elseif ($xml->nodeType == XMLReader::END_ELEMENT) { if ($xml->name == 'Placemark') { if (isset($coords) && count($coords) > 0) { $obj = array('coords' => $coords); if (isset($objcolor)) { $obj['params'] = array($objcolor); unset($objcolor); } if (isset($objtext)) { $obj['text'] = $objtext; unset($objtext); } $objs[] = $obj; unset($coords); } $inplace = false; } elseif ($xml->name == 'innerBoundaryIs') { $innerRing = false; } } } $xml->close(); $res = array('objs' => $objs); if (isset($title) && strlen($title) > 0) { $res['title'] = $title; } return $res; }
/** * Чтение элементов из \XMLReader * @param \XMLReader $xr */ public function elementsFromXmlReader(\XMLReader &$xr) { switch ($xr->localName) { case "ID": $this->setID($xr->readString()); break; case "type": $this->setType($xr->readString()); break; case "uniqueId": $this->setUniqueId($xr->readString()); break; default: parent::elementsFromXmlReader($xr); } }
############## REMOVE CLOSURE NODES FROM CHCHTRAFFIC XML ################## $dom = new DOMDocument(); $dom->load("../XML/chchTraffic.xml"); $delete = $dom->getElementsByTagName('roadClosures'); foreach ($delete as $node) { $node->parentNode->removeChild($node); } $dom->save("../XML/chchTraffic.xml"); ####### READ CHCHTRAFFIC XML ####### READ CHCHTRAFFIC XML ####### $x = new XMLReader(); $x->open('../XML/chchTraffic.xml'); $events = array(); while ($x->read()) { if ($x->localName === 'id' && $x->nodeType == XMLREADER::ELEMENT) { $event = array(); $event[id] = $x->readString(); } if ($x->localName === 'address' && $x->nodeType == XMLREADER::ELEMENT) { $event[description] = $x->readString(); } if ($x->localName === 'startDate' && $x->nodeType == XMLREADER::ELEMENT) { $event[startDate] = $x->readString(); } if ($x->localName === 'endDate' && $x->nodeType == XMLREADER::ELEMENT) { $event[endDate] = $x->readString(); } if ($x->localName === 'publicDescription' && $x->nodeType == XMLREADER::ELEMENT) { $event[description] .= ". " . $x->readString(); } if ($x->localName === 'lastUpdated' && $x->nodeType == XMLREADER::ELEMENT) { $event[eventModified] = $x->readString();
public function import($file) { $objs = array(); $title = ''; $xml = new XMLReader(); $xml->open($file, 'UTF-8', LIBXML_NONET); if (!$xml) { return false; } $mode = ''; $inobject = false; while (@$xml->read()) { if ($xml->nodeType == XMLReader::ELEMENT) { if ($xml->name == 'metadata' && $mode == '') { $mode = 'metadata'; } elseif ($xml->name == 'name' && $mode == 'metadata') { $title = $xml->readString(); } elseif ($xml->name == 'wpt') { $mode = $xml->name; $inobject = true; $lat = $xml->getAttribute('lat'); $lon = $xml->getAttribute('lon'); if ($lat !== null && $lon !== null) { $coords = array(array($lat, $lon)); } } elseif ($xml->name == 'rte' || $xml->name == 'trkseg' || $xml->name == 'trk') { $mode = $xml->name; $inobject = true; $coords = array(); } elseif (($xml->name == 'rtept' || $xml->name == 'trkpt') && $inobject) { $lat = $xml->getAttribute('lat'); $lon = $xml->getAttribute('lon'); if ($lat !== null && $lon !== null) { $coords[] = array($lat, $lon); } } elseif ($xml->name == 'gpxx:DisplayColor' && $inobject) { $objcolor = $this->garmin_to_color($xml->readString()); if (!$objcolor) { unset($objcolor); } } elseif ($xml->name == 'name' && $inobject) { $objtext = $xml->readString(); } } elseif ($xml->nodeType == XMLReader::END_ELEMENT) { if ($xml->name == $mode) { if ($mode == 'wpt' || $mode == 'trkseg' || $mode == 'rte' || $mode == 'trk') { if (isset($coords) && count($coords) > 0) { $cnt = count($coords); //if( count($coords) > 2 && $coords[0][0] == $coords[$cnt-1][0] && $coords[0][1] == $coords[$cnt-1][1] ) // array_pop($coords); $obj = array('coords' => $coords); if (isset($objtext)) { $obj['text'] = $objtext; } if (isset($objcolor)) { $obj['params'] = array($objcolor); } $objs[] = $obj; } if (isset($coords)) { unset($coords); } if (isset($objtext)) { unset($objtext); } if (isset($objcolor)) { unset($objcolor); } $inobject = false; } $mode = ''; } } } $xml->close(); // finalize a trace if gpx file suddenly ended if (($mode == 'wpt' || $mode == 'trkseg' || $mode == 'rte') && isset($coords) && count($coords) > 0) { $obj = array('coords' => $coords); if (isset($objtext)) { $obj['text'] = $objtext; } $objs[] = $obj; } $res = array('objs' => $objs); if (isset($title) && strlen($title) > 0) { $res['title'] = $title; } return $res; }
<?php $xml = new XMLReader(); $xml->open("../../xml_files_windows/standard.xml", $encoding = "UTF-8", $options = LIBXML_NOENT); while ($xml->read()) { if ($xml->nodeType == XMLReader::ELEMENT && $xml->name == 'data') { print $xml->name; print $xml->readString(); } } /* while($xml->read()) { if ($xml->nodeType == XMLReader::ELEMENT) { print $xml->name; print $xml->readString(); } } */ ?>
/** * Чтение элементов из \XMLReader * @param \XMLReader $xr */ public function elementsFromXmlReader(\XMLReader &$xr) { switch ($xr->localName) { case "name": $this->setName($xr->readString()); break; case "Area": $Area = \Adaptor_Bindings::create("\\Archive\\Port\\Adaptor\\Data\\Archive\\Documents\\Area"); $this->setArea($Area->fromXmlReader($xr)); break; case "Large": $Large = \Adaptor_Bindings::create("\\Archive\\Port\\Adaptor\\Data\\Archive\\Documents\\SideType\\Large"); $this->setLarge($Large->fromXmlReader($xr)); break; case "Thumb": $Thumb = \Adaptor_Bindings::create("\\Archive\\Port\\Adaptor\\Data\\Archive\\Documents\\SideType\\Thumb"); $this->setThumb($Thumb->fromXmlReader($xr)); break; default: parent::elementsFromXmlReader($xr); } }
/** * Parses through xml and looks for the 'cookie' parameter * @param string $xml the xml to parse through * @return string $sessoin returns the session id */ public function read_cookie_xml($xml = '') { global $CFG, $USER, $COURSE; if (empty($xml)) { if (is_siteadmin($USER->id)) { notice(get_string('adminemptyxml', 'adobeconnect'), $CFG->wwwroot . '/admin/settings.php?section=modsettingadobeconnect'); } else { notice(get_string('emptyxml', 'adobeconnect'), '', $COURSE); } } $session = false; // $accountid = false; $reader = new XMLReader(); $reader->XML($xml, 'UTF-8'); while ($reader->read()) { if (0 == strcmp($reader->name, 'cookie')) { if (1 == $reader->nodeType) { $session = $reader->readString(); } } } $reader->close(); $this->_cookie = $session; return $session; }
/** * Чтение элементов из \XMLReader * @param \XMLReader $xr */ public function elementsFromXmlReader(\XMLReader &$xr) { switch ($xr->localName) { case "autoid": $this->setAutoid($xr->readString()); break; case "word": $this->setWord($xr->readString()); break; case "trans": $this->setTrans($xr->readString()); break; case "desc": $this->setDesc($xr->readString()); break; case "lastmod": $this->setLastmod($xr->readString()); break; case "Link": $Link = \Adaptor_Bindings::create("\\Lexicon\\Port\\Adaptor\\Data\\Lexicon\\Link"); $this->setLink($Link->fromXmlReader($xr)); break; default: parent::elementsFromXmlReader($xr); } }