Hi, use https://github.com/theseer/fDOMDocument. You can install it over PEAR. You can use it like $xml = '<xml><root><test id="my_id" />'; $dom = new fDOMDocument(); $dom->loadXML($xml); // get attribute $elementNode = $dom->queryOne('//test[@id="my_id"]'); echo $elementNode->nodeValue; Greetings Carlos Medina Am 10.03.2013 11:47, schrieb Karl DeSaulniers: > Hi Guys, > I am hoping someone can guide me or help me fix this issue. > I have been lost in the code for some time now. > I am trying to get the attributes of an xml node. > I have this code: > > function xml_parse_into_assoc($data) > { > $p = xml_parser_create(); > if(stripos($data, "http", 0) !== false) { > if (!($fp = @ fopen($data, 'rb'))) > { > return array (); > } > while (!feof($fp)) > { > $xml .= fread($fp, 8192); > } > fclose($fp); > } else if(stripos($data, "<?", 0) !== false) { > $xml .= $data; > } > xml_parser_set_option($p, XML_OPTION_TARGET_ENCODING, > "ISO-8859-1"); > //xml_parser_set_option($p, XML_OPTION_CASE_FOLDING, 0); > xml_parser_set_option($p, XML_OPTION_SKIP_WHITE, 1); > > xml_parse_into_struct($p, $xml, $vals, $index); > xml_parser_free($p); > > $levels = array(null); > > foreach ($vals as $val) { > if ($val['type'] == 'open' || $val['type'] == 'complete') { > if (!array_key_exists($val['level'], $levels)) { > $levels[$val['level']] = array(); > } > } > > $prevLevel = &$levels[$val['level'] - 1]; > $parent = $prevLevel[sizeof($prevLevel)-1]; > > if ($val['type'] == 'open') { > $val['children'] = array(); > $val['attributes'] = array(); > array_push(&$levels[$val['level']], $val); > continue; > } > > else if ($val['type'] == 'complete') { > $parent['children'][$val['tag']] = $val['value']; > } > > else if ($val['type'] == 'close') { > $pop = array_pop($levels[$val['level']]); > $tag = $pop['tag']; > > if ($parent) { > if (!array_key_exists($tag, $parent['children'])) { > $parent['children'][$tag] = $pop['children']; > } > else if (is_array($parent['children'][$tag])) { > if(!isset($parent['children'][$tag][0])) { > $oldSingle = $parent['children'][$tag]; > $parent['children'][$tag] = null; > $parent['children'][$tag][] = $oldSingle; > > } > $parent['children'][$tag][] = $pop['children']; > } else if (array_key_exists('attributes', $val)) { > if (isset($val['value'])) { > $parent['children'][$tag] = $val['value']; > } > foreach ($val['attributes'] as $key=>$value) { > $parent['children'][$tag][$key] = $value; > } > } > } else { > return(array($pop['tag'] => $pop['children'])); > } > } > > $prevLevel[sizeof($prevLevel)-1] = $parent; > } > } > > This is the part I am adding to try and acheive this. > > ... > else if (array_key_exists('attributes', $val)) { > if (isset($val['value'])) { > $parent['children'][$tag] = $val['value']; > } > foreach ($val['attributes'] as $key=>$value) { > $parent['children'][$tag][$key] = $value; > } > } > ... > > I do admit I haven't the foggiest idea what I am doing here, so I am > noobing out here on how this php function is really working. > I got it off php.net and am trying to implement it in my code. Without > my addition it works well except it doesn't grab any attributes > which I need in order for my script to work properly. > > Any ideas on what I am doing wrong? > > TIA, > > Best, > Karl > > PS: please be gentle.. (: )) > > > Karl DeSaulniers > Design Drumm > http://designdrumm.com > > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php