keep prefix on attributes of an element

replicae85735

New Member
I have the following code to grab the attributes of a \[code\]RichText\[/code\] element. The attributes either have a prefix like \[code\]s7:\[/code\] or there is no prefix at all.\[code\]<?php$url = "http://testvipd7.scene7.com/is/agm/papermusepress/HOL_12_F_green?&fmt=fxgraw"; $xml = simplexml_load_file($url); $xml->registerXPathNamespace('default', 'http://ns.adobe.com/fxg/2008');$xml->registerXPathNamespace('s7', 'http://ns.adobe.com/S7FXG/2008');$textNode = $xml->xpath("//default:RichText[@s7:elementID]");function pr($var) { print '<pre>'; print_r($var); print '</pre>'; }$result1 = array();$result2 = array();foreach($textNode as $node){ $result1[] = $node->attributes('http://ns.adobe.com/S7FXG/2008'); $result2[] = $node->attributes();}$text = array_merge($result1,$result2);pr($text);?>\[/code\]OUTPUT\[code\]Array( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [caps] => none [colorName] => [colorValue] => #518269 [colorspace] => rgb [elementID] => smalltext [fill] => true [fillOverprint] => false [firstBaselineOffset] => ascent [joints] => miter [maxFontSize] => 11 [miterLimit] => 4 [referencePoint] => inherit [rowCount] => 1 [rowGap] => 18 [rowMajorOrder] => true [stroke] => false [strokeOverprint] => false [warpBend] => 0.5 [warpDirection] => horizontal [warpHorizontalDistortion] => 0 [warpStyle] => none [warpVerticalDistortion] => 0 [weight] => 1 ) ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [caps] => none [colorName] => [colorValue] => #518269 [colorspace] => rgb [elementID] => largetext [fill] => true [fillOverprint] => false [firstBaselineOffset] => ascent [joints] => miter [maxFontSize] => 19 [miterLimit] => 4 [referencePoint] => inherit [rowCount] => 1 [rowGap] => 18 [rowMajorOrder] => true [stroke] => false [strokeOverprint] => false [warpBend] => 0.5 [warpDirection] => horizontal [warpHorizontalDistortion] => 0 [warpStyle] => none [warpVerticalDistortion] => 0 [weight] => 1 ) ) [2] => SimpleXMLElement Object ( [@attributes] => Array ( [x] => 278.418 [y] => 115.542 [columnGap] => 18 [columnCount] => 1 [textAlign] => left [fontFamily] => Trade Gothic LT Pro Bold Cn [fontSize] => 11 [color] => #518269 [whiteSpaceCollapse] => preserve [width] => 212.582 [height] => 33 ) ) [3] => SimpleXMLElement Object ( [@attributes] => Array ( [x] => 278.998 [y] => 86.7168 [columnGap] => 18 [columnCount] => 1 [textAlign] => left [fontFamily] => Bootstrap [fontSize] => 19 [color] => #518269 [whiteSpaceCollapse] => preserve [trackingRight] => 4% [width] => 240 [height] => 29 ) ))\[/code\]All of the attributes collected in \[code\]$result1[]\[/code\] are the ones that should have the \[code\]s7:\[/code\] prefix. But when it stores the data from the xml, it is stripping the \[code\]s7:\[/code\] from these attributes. You can see this as the array values for key 0 and 1 have the prefix removed. I need the prefix to stay on there, so it would look like this:\[code\][s7:caps] => none[s7:colorName] => [s7:colorValue] => #518269[s7:colorspace] => rgb[s7:elementID] => smalltextetc...\[/code\]How can I prevent the prefix from being stripped, or how can I add it back in there when the array is getting built?
 
Back
Top