Cheetah
ChWsbXml.php
Go to the documentation of this file.
1 <?php
2 
11 class ChWsbXml
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']] = $aValues[$iTagIndex]['value'];
94 
95  return $aReturnValues;
96  }
97 
101  function setValues($sXmlContent, $sXmlTagName, $aKeyValues)
102  {
103  $rParser = $this->createParser();
104  xml_parse_into_struct($rParser, $sXmlContent, $aValues, $aIndexes);
105  xml_parser_free($rParser);
106 
107  $aTagIndexes = $aIndexes[strtoupper($sXmlTagName)];
108  if(count($aTagIndexes) == 0) return $this->getContent();
109  foreach($aTagIndexes as $iTagIndex)
110  foreach($aKeyValues as $sKey => $sValue)
111  if($aValues[$iTagIndex]['attributes']['KEY'] == $sKey) {
112  $aValues[$iTagIndex]['value'] = $sValue;
113  break;
114  }
115  return $this->getContent($aValues);
116  }
117 
121  function addValues($sXmlContent, $sXmlTagName, $aKeyValues)
122  {
123  $rParser = $this->createParser();
124  xml_parse_into_struct($rParser, $sXmlContent, $aValues, $aIndexes);
125  xml_parser_free($rParser);
126 
127  $aTagIndexes = $aIndexes[strtoupper($sXmlTagName)];
128  $iLastTagIndex = $aTagIndexes[count($aTagIndexes) - 1];
129  $iAddsCount = count($aKeyValues);
130  $iLevel = $aValues[$iLastTagIndex]["level"];
131 
132  for($i=count($aValues)-1; $i>$iLastTagIndex; $i--)
133  $aValues[$i+$iAddsCount] = $aValues[$i];
134 
135  $i = $iLastTagIndex;
136  foreach($aKeyValues as $sKey => $sValue) {
137  $i++;
138  $aValues[$i] = Array("tag" => $sXmlTagName, "type" => "complete", "level" => $iLevel, "attributes" => Array("KEY" => $sKey), "value" => $sValue);
139  }
140  return $this->getContent($aValues);
141  }
142 
146  function getContent($aValues = array())
147  {
148  $sContent = "";
149  foreach($aValues as $aValue) {
150  $sTagName = strtolower($aValue['tag']);
151  switch($aValue['type']) {
152  case "open":
153  $sContent .= "<" . $sTagName . ">";
154  break;
155 
156  case "complete":
157  $sContent .= "<" . $sTagName;
158  if(isset($aValue['attributes']))
159  foreach($aValue['attributes'] as $sAttrKey => $sAttrValue)
160  $sContent .= " " . strtolower($sAttrKey) . "=\"" . $sAttrValue . "\"";
161  $sContent .= isset($aValue['value']) ? "><![CDATA[" . $aValue['value'] . "]]></" . $sTagName . ">" : " />";
162  break;
163 
164  case "close":
165  $sContent .= "</" . $sTagName . ">";
166  break;
167  }
168  }
169  return $sContent;
170  }
171 }
ChWsbXml\getAttributes
getAttributes($sXmlContent, $sXmlTagName, $sXmlTagIndex=-1)
Definition: ChWsbXml.php:34
ChWsbXml\getValues
getValues($sXmlContent, $sXmlTagName)
Definition: ChWsbXml.php:83
$aResult
$aResult
Definition: index.php:19
ChWsbXml\setValues
setValues($sXmlContent, $sXmlTagName, $aKeyValues)
Definition: ChWsbXml.php:101
php
ChWsbXml\addValues
addValues($sXmlContent, $sXmlTagName, $aKeyValues)
Definition: ChWsbXml.php:121
ChWsbXml\createParser
createParser()
Definition: ChWsbXml.php:13
ChWsbXml\getAttribute
getAttribute($sXmlContent, $sXmlTag, $sXmlAttribute)
Definition: ChWsbXml.php:21
$sContent
$sContent
Definition: bottom_menu_compose.php:169
ChWsbXml\getTags
getTags($sXmlContent, $sXmlTagName, $iXmlTagIndex=-1)
Definition: ChWsbXml.php:60
as
as
Definition: Filter.ExtractStyleBlocks.Escaping.txt:10
ChWsbXml\getContent
getContent($aValues=array())
Definition: ChWsbXml.php:146
ChWsbXml
Definition: ChWsbXml.php:12