Cheetah
xml.inc.php
Go to the documentation of this file.
1 <?php
2 
11 class ChXml
12 {
13  function createParser()
14  {
15  return xml_parser_create("UTF-8");
16  }
17 
21  function getAttribute($sXmlContent, $sXmlTag, $sXmlAttribute)
22  {
23  $rParser = $this->createParser();
24  xml_parse_into_struct($rParser, $sXmlContent, $aValues, $aIndexes);
25  xml_parser_free($rParser);
26 
27  $aFieldIndex = $aIndexes[strtoupper($sXmlTag)][0];
28  return $aValues[$aFieldIndex]['attributes'][strtoupper($sXmlAttribute)];
29  }
30 
34  function getAttributes($sXmlContent, $sXmlTagName, $sXmlTagIndex = -1)
35  {
36  $rParser = $this->createParser();
37  xml_parse_into_struct($rParser, $sXmlContent, $aValues, $aIndexes);
38  xml_parser_free($rParser);
39 
44  if($sXmlTagIndex == -1) {
45  $aResult = array();
46  $aTagIndexes = $aIndexes[strtoupper($sXmlTagName)];
47  if(count($aTagIndexes) <= 0) return NULL;
48  foreach($aTagIndexes as $iTagIndex)
49  $aResult[] = $aValues[$iTagIndex]['attributes'];
50  return $aResult;
51  } else {
52  $iTagIndex = $aIndexes[strtoupper($sXmlTagName)][$sXmlTagIndex];
53  return $aValues[$iTagIndex]['attributes'];
54  }
55  }
56 
60  function getTags($sXmlContent, $sXmlTagName, $iXmlTagIndex = -1)
61  {
62  $rParser = $this->createParser();
63  xml_parse_into_struct($rParser, $sXmlContent, $aValues, $aIndexes);
64  xml_parser_free($rParser);
65 
66  //--- Get an array of tags ---//
67  if($iXmlTagIndex == -1) {
68  $aResult = array();
69  $aTagIndexes = $aIndexes[strtoupper($sXmlTagName)];
70  if(count($aTagIndexes) <= 0) return NULL;
71  foreach($aTagIndexes as $iTagIndex)
72  $aResult[] = $aValues[$iTagIndex];
73  return $aResult;
74  } else {
75  $iTagIndex = $aIndexes[strtoupper($sXmlTagName)][$iXmlTagIndex];
76  return $aValues[$iTagIndex];
77  }
78  }
79 
83  function getValues($sXmlContent, $sXmlTagName)
84  {
85  $rParser = $this->createParser();
86  xml_parse_into_struct($rParser, $sXmlContent, $aValues, $aIndexes);
87  xml_parser_free($rParser);
88 
89  $aTagIndexes = $aIndexes[strtoupper($sXmlTagName)];
90  $aTagIndexes = isset($aTagIndexes) ? $aTagIndexes : array();
91  $aReturnValues = array();
92  foreach($aTagIndexes as $iTagIndex) {
93  $aReturnValues[$aValues[$iTagIndex]['attributes']['KEY']] =
94  isset($aValues[$iTagIndex]['value']) ? $aValues[$iTagIndex]['value'] : NULL;
95  }
96  return $aReturnValues;
97  }
98 
102  function setValues($sXmlContent, $sXmlTagName, $aKeyValues)
103  {
104  $rParser = $this->createParser();
105  xml_parse_into_struct($rParser, $sXmlContent, $aValues, $aIndexes);
106  xml_parser_free($rParser);
107 
108  $aTagIndexes = $aIndexes[strtoupper($sXmlTagName)];
109  if(count($aTagIndexes) == 0) return $this->getContent();
110  foreach($aTagIndexes as $iTagIndex)
111  foreach($aKeyValues as $sKey => $sValue)
112  if($aValues[$iTagIndex]['attributes']['KEY'] == $sKey) {
113  $aValues[$iTagIndex]['value'] = $sValue;
114  break;
115  }
116  return $this->getContent($aValues);
117  }
118 
122  function addValues($sXmlContent, $sXmlTagName, $aKeyValues)
123  {
124  $rParser = $this->createParser();
125  xml_parse_into_struct($rParser, $sXmlContent, $aValues, $aIndexes);
126  xml_parser_free($rParser);
127 
128  $aTagIndexes = $aIndexes[strtoupper($sXmlTagName)];
129  $iLastTagIndex = $aTagIndexes[count($aTagIndexes) - 1];
130  $iAddsCount = count($aKeyValues);
131  $iLevel = $aValues[$iLastTagIndex]["level"];
132 
133  for($i=count($aValues)-1; $i>$iLastTagIndex; $i--)
134  $aValues[$i+$iAddsCount] = $aValues[$i];
135 
136  $i = $iLastTagIndex;
137  foreach($aKeyValues as $sKey => $sValue) {
138  $i++;
139  $aValues[$i] = Array("tag" => $sXmlTagName, "type" => "complete", "level" => $iLevel, "attributes" => Array("KEY" => $sKey), "value" => $sValue);
140  }
141  return $this->getContent($aValues);
142  }
143 
147  function getContent($aValues = array())
148  {
149  $sContent = "";
150  foreach($aValues as $aValue) {
151  $sTagName = strtolower($aValue['tag']);
152  switch($aValue['type']) {
153  case "open":
154  $sContent .= "<" . $sTagName . ">";
155  break;
156 
157  case "complete":
158  $sContent .= "<" . $sTagName;
159  if(isset($aValue['attributes']))
160  foreach($aValue['attributes'] as $sAttrKey => $sAttrValue)
161  $sContent .= " " . strtolower($sAttrKey) . "=\"" . $sAttrValue . "\"";
162  $sContent .= isset($aValue['value']) ? "><![CDATA[" . $aValue['value'] . "]]></" . $sTagName . ">" : " />";
163  break;
164 
165  case "close":
166  $sContent .= "</" . $sTagName . ">";
167  break;
168  }
169  }
170  return $sContent;
171  }
172 }
173 
174 $oXml = new ChXml();
175 
176 function xmlGetAttribute($sXmlContent, $sXmlTag, $sXmlAttribute)
177 {
178  global $oXml;
179  return $oXml->getAttribute($sXmlContent, $sXmlTag, $sXmlAttribute);
180 }
181 
182 function xmlGetAttributes($sXmlContent, $sXmlTagName, $sXmlTagIndex = -1)
183 {
184  global $oXml;
185  return $oXml->getAttributes($sXmlContent, $sXmlTagName, $sXmlTagIndex);
186 }
187 
188 function xmlGetTags($sXmlContent, $sXmlTagName, $iXmlTagIndex = -1)
189 {
190  global $oXml;
191  return $oXml->getTags($sXmlContent, $sXmlTagName, $iXmlTagIndex = -1);
192 }
193 function xmlGetValue($sXmlContent, $sXmlTagName, $sName)
194 {
195  global $oXml;
196  $aValues = $oXml->getValues($sXmlContent, $sXmlTagName);
197  return isset($aValues[$sName]) ? $aValues[$sName] : "";
198 }
199 function xmlGetValues($sXmlContent, $sXmlTagName)
200 {
201  global $oXml;
202  return $oXml->getValues($sXmlContent, $sXmlTagName);
203 }
204 function xmlSetValue($sXmlContent, $sXmlTagName, $sName, $sValue)
205 {
206  global $oXml;
207  $aKeyValues = Array($sName => $sValue);
208  return $oXml->setValues($sXmlContent, $sXmlTagName, $aKeyValues);
209 }
210 function xmlSetValues($sXmlContent, $sXmlTagName, $aKeyValues)
211 {
212  global $oXml;
213  return $oXml->setValues($sXmlContent, $sXmlTagName, $aKeyValues);
214 }
215 function xmlAddValues($sXmlContent, $sXmlTagName, $aKeyValues)
216 {
217  global $oXml;
218  return $oXml->addValues($sXmlContent, $sXmlTagName, $aKeyValues);
219 }
ChXml\getAttribute
getAttribute($sXmlContent, $sXmlTag, $sXmlAttribute)
Definition: xml.inc.php:21
$oXml
$oXml
Definition: xml.inc.php:174
ChXml
Definition: xml.inc.php:12
ChXml\getTags
getTags($sXmlContent, $sXmlTagName, $iXmlTagIndex=-1)
Definition: xml.inc.php:60
$aResult
$aResult
Definition: index.php:19
php
ChXml\setValues
setValues($sXmlContent, $sXmlTagName, $aKeyValues)
Definition: xml.inc.php:102
ChXml\getValues
getValues($sXmlContent, $sXmlTagName)
Definition: xml.inc.php:83
xmlGetValues
xmlGetValues($sXmlContent, $sXmlTagName)
Definition: xml.inc.php:199
ChXml\addValues
addValues($sXmlContent, $sXmlTagName, $aKeyValues)
Definition: xml.inc.php:122
xmlSetValues
xmlSetValues($sXmlContent, $sXmlTagName, $aKeyValues)
Definition: xml.inc.php:210
ChXml\getContent
getContent($aValues=array())
Definition: xml.inc.php:147
xmlAddValues
xmlAddValues($sXmlContent, $sXmlTagName, $aKeyValues)
Definition: xml.inc.php:215
xmlGetTags
xmlGetTags($sXmlContent, $sXmlTagName, $iXmlTagIndex=-1)
Definition: xml.inc.php:188
ChXml\getAttributes
getAttributes($sXmlContent, $sXmlTagName, $sXmlTagIndex=-1)
Definition: xml.inc.php:34
xmlGetAttributes
xmlGetAttributes($sXmlContent, $sXmlTagName, $sXmlTagIndex=-1)
Definition: xml.inc.php:182
xmlSetValue
xmlSetValue($sXmlContent, $sXmlTagName, $sName, $sValue)
Definition: xml.inc.php:204
xmlGetValue
xmlGetValue($sXmlContent, $sXmlTagName, $sName)
Definition: xml.inc.php:193
global
if(!defined("GLOBAL_MODULE")) define("GLOBAL_MODULE" global
Definition: header.inc.php:25
ChXml\createParser
createParser()
Definition: xml.inc.php:13
$sContent
$sContent
Definition: bottom_menu_compose.php:169
as
as
Definition: Filter.ExtractStyleBlocks.Escaping.txt:10
xmlGetAttribute
xmlGetAttribute($sXmlContent, $sXmlTag, $sXmlAttribute)
Definition: xml.inc.php:176
$sName
$sName
Definition: ChWsbAdminTools.php:853