<?php $x = new \org\rhaco\Xml("test"); $x->attr("abc", 123); eq("123", $x->in_attr("abc")); eq(null, $x->in_attr("def")); eq("456", $x->in_attr("ghi", 456)); $x->attr("def", "'<>'"); $x->escape(true); eq("'<>'", $x->in_attr("def")); eq('<test abc="123" def="'<>'" />', $x->get()); $x->escape(false); eq("'<>'", $x->in_attr("def")); eq('<test abc="123" def="\'<>\'" />', $x->get()); $x = new \org\rhaco\Xml("test"); $x->attr("abc", 123); $x->attr("def", 456); $x->attr("ghi", 789); eq(array("abc" => 123, "def" => 456, "ghi" => 789), iterator_to_array($x)); $x->rm_attr("def"); eq(array("abc" => 123, "ghi" => 789), iterator_to_array($x)); $x->attr("def", 456); eq(array("abc" => 123, "ghi" => 789, "def" => 456), iterator_to_array($x)); $x->rm_attr("abc", "ghi"); eq(array("def" => 456), iterator_to_array($x)); $x = new \org\rhaco\Xml("test"); eq(false, $x->is_attr("abc")); $x->attr("abc", 123); eq(true, $x->is_attr("abc")); $x->attr("abc", null); eq(true, $x->is_attr("abc"));
eq("true", $xml->value(true)); eq("false", $xml->value(false)); eq("<abc>1</abc><def>2</def><ghi>3</ghi>", $xml->value(array("abc" => 1, "def" => 2, "ghi" => 3))); eq(null, $xml->value('')); eq(1, $xml->value('1')); eq(null, $xml->value(null)); $xml->escape(true); eq("<abc>123</abc>", $xml->value("<abc>123</abc>")); eq("<b>123</b>", $xml->value(new \org\rhaco\Xml("b", "123"))); $xml = new \org\rhaco\Xml("test"); $xml->escape(false); eq("<abc>123</abc>", $xml->value("<abc>123</abc>", false)); $obj = new \org\rhaco\Request(); $obj->rm_vars(); $obj->vars('aaa', 'hoge'); $obj->vars('ccc', 123); $xml = new \org\rhaco\Xml('abc', $obj); eq('<abc><aaa>hoge</aaa><ccc>123</ccc></abc>', $xml->get()); $xml = new \org\rhaco\Xml("test"); $add = new \org\rhaco\Xml("addxml", "hoge"); $xml->add($add); $xml->add($add->get()); $xml->add((string) $add); eq('<test><addxml>hoge</addxml><![CDATA[<addxml>hoge</addxml>]]><![CDATA[<addxml>hoge</addxml>]]></test>', $xml->get()); $xml = new \org\rhaco\Xml("test"); $add = new \org\rhaco\Xml("addxml", "hoge"); $xml->add($add); $xml->add($add->get()); $xml->add((string) $add); eq('<test><addxml>hoge</addxml><![CDATA[<addxml>hoge</addxml>]]><![CDATA[<addxml>hoge</addxml>]]></test>', $xml->get());
protected function __str__() { $result = new \org\rhaco\Xml('feed'); $result->attr('xmlns', self::XMLNS); foreach ($this->ar_xmlns() as $ns => $url) { $result->attr('xmlns:' . $ns, $url); } foreach ($this->props() as $name => $value) { if (!empty($value)) { switch ($name) { case 'title': case 'subtitle': case 'id': case 'generator': $result->add(new \org\rhaco\Xml($name, $value)); break; case 'updated': $result->add(new \org\rhaco\Xml($name, \org\rhaco\lang\Date::format_atom($value))); break; default: if (is_array($value)) { foreach ($value as $v) { try { $result->add($v instanceof \org\rhaco\net\xml\atom\Object ? $v->xml() : $v); } catch (\org\rhaco\net\xml\atom\NotfoundException $e) { } } } } } } return $result->get(); }
<?php $obj = new \test\model\XmlModel(); $self = new \org\rhaco\Xml('abc', $obj); eq('<abc><aaa>hoge</aaa><ccc>123</ccc></abc>', $self->get()); $e = explode('\\', get_class($obj)); $n = array_pop($e); $obj1 = clone $obj; $obj2 = clone $obj; $obj3 = clone $obj; $obj2->ccc(456); $obj3->ccc(789); $arr = array($obj1, $obj2, $obj3); $self = new \org\rhaco\Xml('abc', $arr); eq(sprintf('<abc>' . '<%s><aaa>hoge</aaa><ccc>123</ccc></%s>' . '<%s><aaa>hoge</aaa><ccc>456</ccc></%s>' . '<%s><aaa>hoge</aaa><ccc>789</ccc></%s>' . '</abc>', $n, $n, $n, $n, $n, $n), $self->get());
<?php $x = new \org\rhaco\Xml("test", 123); eq("<test>123</test>", $x->get()); $x = new \org\rhaco\Xml("test", new \org\rhaco\Xml("hoge", "AAA")); eq("<test><hoge>AAA</hoge></test>", $x->get()); $x = new \org\rhaco\Xml("test"); eq("<test />", $x->get()); $x = new \org\rhaco\Xml("test"); $x->close_empty(false); eq("<test></test>", $x->get()); $x = new \org\rhaco\Xml("test"); $x->attr("abc", 123); $x->attr("def", 456); eq('<test abc="123" def="456" />', $x->get());