Search
  1. SimpleXMLElement::addAttribute PHP5~〔SimpleXML要素に属性を追加する〕
  2. SimpleXMLElement::addChild PHP5~〔XMLノードに子要素を追加する〕
  3. SimpleXMLElement::asXML PHP5~〔SimpleXML要素に基づいて整形式のXML文字列を返す〕
  4. SimpleXMLElement::attributes PHP5~〔要素の属性を定義する〕
  5. SimpleXMLElement::children PHP5~〔指定したノードの子ノードを見つける〕
  6. SimpleXMLElement::__construct PHP5~〔新しいSimpleXMLElementオブジェクトを生成する〕
  7. SimpleXMLElement::getDocNamespaces PHP5~〔ドキュメントで宣言されている名前空間を返す〕
  8. SimpleXMLElement::getName PHP5~〔XML要素の名前を取得する〕
  9. SimpleXMLElement::getNamespaces PHP5~〔ドキュメントで使用している名前空間を返す〕
  10. SimpleXMLElement::registerXPathNamespace PHP5~〔次のXPathクエリ用のprefix/nsコンテキストを作成する〕
  11. SimpleXMLElement::xpath PHP5~〔XMLデータにXpathクエリを実行する〕
  12. simplexml_import_dom PHP5~〔DOMノードからSimpleXMLElementオブジェクトを取得する〕
  13. simplexml_load_file PHP5~〔XMLファイルをパースしてオブジェクトに代入する〕
  14. simplexml_load_string PHP5~〔XML文字列をオブジェクトに代入する〕

SimpleXMLElement::addAttribute PHP5~
SimpleXML要素に属性を追加する

unknown

void addAttribute ( string $属性名, string $属性の値[, string $名前空間 ] )

SimpleXML要素に属性名の属性とその属性の値を追加します。 オプションの第3引数名前空間を指定した場合は、その属性が属する名前空間に追加します。 返り値はありません。

<?
/* ▼book.xml
<?xml version="1.0" encoding="utf-8"?>
<books>
    <book date="unknown" price="unknown">PHP関連のおすすめ書籍</book>
    <book date="20081031" price="1995">まるごとPHP! Vol.2</book>
    <book date="20080918" price="2940">PHP×携帯サイト デベロッパーズバイブル</book>
    <book date="20080618" price="2604" >CakePHP ポケットリファレンス</book>
    <book date="20080526" price="3570">初めてのPHP &amp; MySQL 第2版</book>
    <book date="20080125" price="2520">PHPライブラリコレクション</book>
</books>
*/

# XMLファイルを読み込む
$xml=simplexml_load_file("/content/demo/book.xml");

# 最初のitem要素の属性を削除
unset($xml->book[0][price]);

# XMLファイルに書き込む
$xml->asXML("/content/demo/book.xml");

/* ▼book.xml
<?xml version="1.0" encoding="utf-8"?>
<books>
    <book>PHP関連のおすすめ書籍</book>
    <book date="20081031" price="1995">まるごとPHP! Vol.2</book>
    <book date="20080918" price="2940">PHP×携帯サイト デベロッパーズバイブル</book>
    <book date="20080618" price="2604">CakePHP ポケットリファレンス</book>
    <book date="20080526" price="3570">初めてのPHP &amp; MySQL 第2版</book>
    <book date="20080125" price="2520">PHPライブラリコレクション</book>
</books>
*/
?>

SimpleXMLElement::addChild PHP5~
XMLノードに子要素を追加する

unknown

SimpleXMLElement addChild ( string $子要素名[, string $子要素の値[, string $名前空間 ]] )

XMLノードに子要素を追加し、子要素のSimpleXMLElementを返します。

<?
/* ▼book.xml
<?xml version="1.0" encoding="utf-8"?>
<books title="PHP関連書籍">
    <book date="20080526" price="3570">初めてのPHP &amp; MySQL 第2版</book>
</books>
*/

# XMLファイルを読み込む
$xml=simplexml_load_file("/content/demo/book.xml");

# 最初のitem要素の属性を削除
$book=$xml->addChild("book","PHPライブラリコレクション");
$book->addAttribute("date",20080125);
$book->addAttribute("price",2520);

# XMLファイルに書き込む
echo $xml->asXML("/content/demo/book.xml");

/* ▼book.xml
<?xml version="1.0" encoding="utf-8"?>
<books title="PHP関連書籍">
    <book date="20080526" price="3570">初めてのPHP &amp; MySQL 第2版</book>
    <book date="20080125" price="2520">PHPライブラリコレクション</book>
</books>
*/
?>

SimpleXMLElement::asXML PHP5~
SimpleXML要素に基づいて整形式のXML文字列を返す

unknown

mixed asXML ( [ string $ファイル名 ] )

親オブジェクトのデータをXML version1.0形式にフォーマットした文字列を返します。 エラーが発生した場合はFALSEを返します。

オプションの第1引数ファイル名を指定した場合は、そのファイルにデータを書き込みます。 ファイルに正常に書き込むことができた場合はTRUE、そうでない場合はFALSEを返します。

<?
/* ▼book.xml
<?xml version="1.0" encoding="utf-8"?>
<books>
    <book date="20081031" price="1995">まるごとPHP! Vol.2</book>
</books>
*/
# XMLファイルを読み込む
$xml=simplexml_load_file("/content/demo/book.xml");

# XMLノードに子要素を追加する
$book=$xml->addChild("book","PHPライブラリコレクション");
$book->addAttribute("date",20080125);
$book->addAttribute("price",2520);

# XMLファイルに書き込む
$xml->asXML("/content/demo/book.xml");

# XML version1.0形式にフォーマットした文字列を表示
echo $xml->asXML();

/* ▼book.xml
<?xml version="1.0" encoding="utf-8"?>
<books>
    <book date="20081031" price="1995">まるごとPHP! Vol.2</book>
    <book date="20080125" price="2520">PHPライブラリコレクション</book>
</books>
*/
?>

SimpleXMLElement::attributes PHP5~
要素の属性を定義する

unknown

SimpleXMLElement attributes ( [ string $取得した属性の名前空間[, bool $is_prefix=false ]] )

XML要素内で定義された属性とその値を取得して返します。

<?
/* ▼book.xml
<?xml version="1.0" encoding="utf-8"?>
<books title="PHP関連のおすすめ書籍">
    <book date="20081031" price="1995">まるごとPHP! Vol.2</book>
    <book date="20080918" price="2940">PHP×携帯サイト デベロッパーズバイブル</book>
    <book date="20080618" price="2604" >CakePHP ポケットリファレンス</book>
    <book date="20080526" price="3570">初めてのPHP &amp; MySQL 第2版</book>
    <book date="20080125" price="2520">PHPライブラリコレクション</book>
</books>
*/

# XMLファイルを読み込む
$xml=simplexml_load_file("/content/demo/book.xml");

# XML要素内で定義された属性とその値を取得する
for($i=0$i<count($xml->book); $i++){
    echo $xml->book[$i]."/";
    foreach($xml->book[$i]->attributes() as $a=>$b){
        echo $a.":".$b."/";
    }
    echo "\n";
}
/*
まるごとPHP! Vol.2/date:20081031/price:1995/
PHP×携帯サイト デベロッパーズバイブル/date:20080918/price:2940/
CakePHP ポケットリファレンス/date:20080618/price:2604/
初めてのPHP & MySQL 第2版/date:20080526/price:3570/
PHPライブラリコレクション/date:20080125/price:2520/
*/
?>

SimpleXMLElement::children PHP5~
指定したノードの子ノードを見つける

unknown

SimpleXMLElement children ( [ string $ns[, bool $is_prefix=false ]] )

指定した要素のメンバーである子を見つけます。 結果は、通常の反復子により取得することができます。

<?
/* ▼book.xml
<?xml version="1.0" encoding="utf-8"?>
<books title="PHP関連のおすすめ書籍">
    <book date="20081031" price="1995">まるごとPHP! Vol.2</book>
    <book date="20080918" price="2940">PHP×携帯サイト デベロッパーズバイブル</book>
    <book date="20080618" price="2604" >CakePHP ポケットリファレンス</book>
    <book date="20080526" price="3570">初めてのPHP &amp; MySQL 第2版</book>
    <book date="20080125" price="2520">PHPライブラリコレクション</book>
</books>
*/

# XMLファイルを読み込む
$xml=simplexml_load_file("/content/demo/book.xml");

# 擬似配列を走査する
foreach($xml->children() as $name => $node){
    echo $name."=".$node."<br/>";
}
/*
book=まるごとPHP! Vol.2
book=PHP×携帯サイト デベロッパーズバイブル
book=CakePHP ポケットリファレンス
book=初めてのPHP & MySQL 第2版
book=PHPライブラリコレクション
*/
?>

SimpleXMLElement::__construct PHP5~
新しいSimpleXMLElementオブジェクトを生成する

unknown

construct ( string $データ[, int $オプション[, bool $データがURLかの有無=false[, string $ns[, bool $is_prefix ]]]] )

データを表す、新しいSimpleXMLElementオブジェクトを生成して返します。 XMLデータないでエラーが見つかるたびにE_WARNINGエラーメッセージを出し、例外をスローします。

第1引数データには、整形式XML文字列を指定します。 オプションの第3引数データがURLかの有無TRUEを指定した場合は、XMLファイルへのパスあるいはURLを指定します。

オプション第2引数オプションは、追加のLibxmlパラメータを指定するのに使用します。

<?
# 新しいSimpleXMLElementオブジェクトを生成する
$xml=new SimpleXMLElement("/content/demo/book.xml"nulltrue);
echo $xml->asXML();
/*
<?xml version="1.0" encoding="utf-8"?>
<books title="PHP関連のおすすめ書籍">
    <book date="20081031" price="1995">まるごとPHP! Vol.2</book>
    <book date="20080918" price="2940">PHP×携帯サイト デベロッパーズバイブル</book>
    <book date="20080618" price="2604">CakePHP ポケットリファレンス</book>
    <book date="20080526" price="3570">初めてのPHP &amp; MySQL 第2版</book>
    <book date="20080125" price="2520">PHPライブラリコレクション</book>
</books>
*/
?>

SimpleXMLElement::getDocNamespaces PHP5~
ドキュメントで宣言されている名前空間を返す

unknown

array getDocNamespaces ( [ bool $recursive ] )

ドキュメントで宣言されている名前空間の名前および関連付けられたURIを配列で返します。

オプションの第1引数recursiveを指定した場合は、親ノードおよび子ノードで宣言されているすべての名前空間を返します。 省略した場合は、ルートノードで宣言されている名前空間のみを返します。

<?
###### ドキュメントの名前空間の取得
$xml = <<<XML
<?xml version="1.0" standalone="yes"?>
<people xmlns:p="http://example.org/ns">
    <p:person id="1">John Doe</p:person>
    <p:person id="2">Susie Q. Public</p:person>
</people>
XML;
 
$sxe = new SimpleXMLElement($xml);

$namespaces $sxe->getDocNamespaces();
var_dump($namespaces);
/*
array(1) {
  ["p"]=>
  string(21) "http://example.org/ns"
}
*/

###### 複数の名前空間の使用
$xml = <<<XML
<?xml version="1.0" standalone="yes"?>
<people xmlns:p="http://example.org/ns" xmlns:t="http://example.org/test">
    <p:person t:id="1">John Doe</p:person>
    <p:person t:id="2" a:addr="123 Street" xmlns:a="http://example.org/addr">
        Susie Q. Public
    </p:person>
</people>
XML;
 
$sxe = new SimpleXMLElement($xml);
$namespaces $sxe->getDocNamespaces(TRUE);
var_dump($namespaces);
/*
array(3) {
  ["p"]=>
  string(21) "http://example.org/ns"
  ["t"]=>
  string(23) "http://example.org/test"
  ["a"]=>
  string(23) "http://example.org/addr"
}
*/
?>

SimpleXMLElement::getName PHP5~
XML要素の名前を取得する

unknown

string getName ( void )

SimpleXMLElementオブジェクトが参照しているXML要素名を文字列で返します。

<?
/* ▼book.xml
<?xml version="1.0" encoding="utf-8"?>
<books title="PHP関連のおすすめ書籍">
    <book date="20081031" price="1995">まるごとPHP! Vol.2</book>
    <book date="20080918" price="2940">PHP×携帯サイト デベロッパーズバイブル</book>
    <book date="20080618" price="2604" >CakePHP ポケットリファレンス</book>
    <book date="20080526" price="3570">初めてのPHP &amp; MySQL 第2版</book>
    <book date="20080125" price="2520">PHPライブラリコレクション</book>
</books>
*/

# XMLファイルを読み込む
$xml=new SimpleXMLElement("/content/demo/book.xml"nulltrue);

# 要素名を取得する
echo $xml->getName()."\n"// books

foreach($xml->children() as $child){
    # 要素名を取得する
    echo $child->getName()."\n";
}
/*
book
book
book
book
book
*/
?>

SimpleXMLElement::getNamespaces PHP5~
ドキュメントで使用している名前空間を返す

unknown

array getNamespaces ( [ bool $recursive ] )

ドキュメントで使用している名前空間の名前および関連付けられたURIを配列で返します。

オプションの第1引数recursiveを指定した場合は、親ノードおよび子ノードで宣言されているすべての名前空間を返します。 省略した場合は、ルートノードで宣言されている名前空間のみを返します。

<?
$xml = <<<XML
<?xml version="1.0" standalone="yes"?>
<people xmlns:p="http://example.org/ns" xmlns:t="http://example.org/test">
    <p:person id="1">John Doe</p:person>
    <p:person id="2">Susie Q. Public</p:person>
</people>
XML;
 
$sxe = new SimpleXMLElement($xml);
$namespaces $sxe->getNamespaces(true);
var_dump($namespaces);
/*
array(1) {
  ["p"]=>
  string(21) "http://example.org/ns"
}
*/
?>

SimpleXMLElement::registerXPathNamespace PHP5~
次のXPathクエリ用のprefix/nsコンテキストを作成する

unknown

bool registerXPathNamespace ( string $prefix, string $ns )

次のXPathクエリ用のprefix/nsコンテキストを作成します。 成功した場合にTRUE、失敗した場合にFALSEを返します。

registerXPathNamespaceは、XMLドキュメントの提供者が名前空間のプレフィックスを変更した場合に有用です。 プレフィックスを作成して名前空間に関連付け、そのプレフィックスで名前空間のノードにアクセス可能にするため、提供者がプレフィックスを変更しても、コードを書き換える必要がありません。

第1引数prefixには、nsで指定した名前空間へのXPathクエリで使用する名前空間プレフィックスを指定します。

第2引数nsには、XPathクエリで使用する名前空間を指定します。 指定する名前空間は、XMLドキュメントで使用している名前空間と一致している必要があります。 一致していない場合は、prefixを使用したXPathクエリは何も結果を返しません。

<?
# XPathクエリで使用する名前空間プレフィックスの設定
$xml = <<<EOD
<book xmlns:chap="http://example.org/chapter-title">
    <title>My Book</title>
    <chapter id="1">
        <chap:title>Chapter 1</chap:title>
        <para>Donec velit. Nullam eget tellus vitae tortor gravida scelerisque. 
            In orci lorem, cursus imperdiet, ultricies non, hendrerit et, orci. 
            Nulla facilisi. Nullam velit nisl, laoreet id, condimentum ut, 
            ultricies id, mauris.</para>
    </chapter>
    <chapter id="2">
        <chap:title>Chapter 2</chap:title>
        <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin 
            gravida. Phasellus tincidunt massa vel urna. Proin adipiscing quam 
            vitae odio. Sed dictum. Ut tincidunt lorem ac lorem. Duis eros 
            tellus, pharetra id, faucibus eu, dapibus dictum, odio.</para>
    </chapter>
</book>
EOD;

$sxe=new SimpleXMLElement($xml);
$sxe->registerXPathNamespace('c''http://example.org/chapter-title');
$result $sxe->xpath('//c:title');

foreach($result as $title){
  echo $title."\n";
}
/*
Chapter 1
Chapter 2
*/
?>

SimpleXMLElement::xpath PHP5~
XMLデータにXpathクエリを実行する

unknown

array xpath ( string $path )

指定したpathに指定したXPatにマッチするSimpleXMLノードを探し、SimpleXMLElementオブジェクトの配列を返します。 エラーが発生した場合はFALSEを返します。

<?
###### Xpath
$string = <<<XML
<a>
 <b>
  <c>text</c>
  <c>stuff</c>
 </b>
 <d>
  <c>code</c>
 </d>
</a>
XML;

$xml=new SimpleXMLElement($string);

# <a><b><c> を探す
$result=$xml->xpath('/a/b/c');

while(list( , $node)=each($result)) {
    echo '/a/b/c: ',$node,"\n";
}
/*
/a/b/c: text
/a/b/c: stuff
*/

# 相対パスでも動作
$result=$xml->xpath('b/c');

while(list( , $node)=each($result)) {
    echo 'b/c: ',$node,"\n";
}
/*
b/c: text
b/c: stuff
*/
?>

simplexml_import_dom PHP5~
DOMノードからSimpleXMLElementオブジェクトを取得する

unknown

SimpleXMLElement simplexml_imort_dom ( DOMNode $ノード[, string $クラス名 ] )

ノードに指定したDOMドキュメントからSimpleXMLElementオブジェクトを作成して返します。 失敗した場合はFALSEを返します。 作成したオブジェクトは、通常のSimpleXML要素として使用することができます。

第1引数ノードには、DOM要素ノードを指定します。

オプションの第2引数クラス名を指定すると、この関数は指定したクラスのオブジェクトを生成します。 このクラスは、SimpleXMLElementを継承している必要があります。

<?
# DOM のインポート
$dom=new DOMDocument;
$dom->loadXML('<books><book><title>blah</title></book></books>');
if (!$dom) {
    echo 'ドキュメントのパース時にエラーが発生しました';
    exit;
}

$s=simplexml_import_dom($dom);
echo $s->book[0]->title// blah
?>

simplexml_load_file PHP5~
XMLファイルをパースしてオブジェクトに代入する

unknown

object simplexml_load_file ( string $ファイル名[, string $クラス名[, int $オプション[, string $ns[, bool $is_prefix ]]]] )

指定したファイル名のファイル中の整形式XMLドキュメントをSimpleXMLElementクラスのオブジェクトに変換して返します。 返り値のオブジェクトは、XMLドキュメント内のデータをプロパティに含みます。 エラーが発生した場合はFALSEを返します。

第1引数ファイル名には、XMLファイルへのパスを指定します。

Libxml2はURIをエスケープしません。 例えばURIパラメータaに「b&c」を渡す場合は、simplexml_load_file(rawurlencode('http://example.com?a='.urlencode('b&c')))をコールする必要があります。 PHP v5.1.0以降ではPHPが自動的に行うのでエスケープする必要はありません。

オプション第2引数オプションは、追加のLibxmlパラメータを指定するのに使用します(PHP v5.1.0とLibxml v2.6.0~)。

<?
# XMLドキュメントをパースする
if(file_exists('/content/demo/book.xml')){
    $xml=simplexml_load_file('/content/demo/book.xml');
    print_r($xml);
}else{
    exit('Failed to open test.xml.');
}
/*
SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [title] => PHP関連のおすすめ書籍
        )
    [book] => Array
        (
            [0] => まるごとPHP! Vol.2
            [1] => PHP×携帯サイト デベロッパーズバイブル
            [2] => CakePHP ポケットリファレンス
            [3] => 初めてのPHP & MySQL 第2版
            [4] => PHPライブラリコレクション
        )
)
*/
?>

simplexml_load_string PHP5~
XML文字列をオブジェクトに代入する

unknown

object simplexml_load_string ( string $データ[, string $クラス名[, int $オプション[, string $ns[, bool $is_prefix ]]]] )

データに指定した整形式XML文字列をSimpleXMLElementクラスのオブジェクトにして返します。 返り値のオブジェクトは、XMLドキュメント内のデータをプロパティに含みます。 エラーが発生した場合はFALSEを返します。

第1引数データには、整形式XML文字列を指定します。

オプション第2引数クラス名を使用すると、simplexml_load_file()が指定されたクラスのオブジェクトを返すようにすることができます。 このクラスは、SimpleXMLElementを継承している必要があります。

オプション第3引数オプションは、追加のLibxmlパラメータを指定するのに使用します(PHP v5.1.0とLibxml v2.6.0~)。

<?
# XML 文字列をパースする

$string = <<<XML
<?xml version='1.0'?> 
<document>
 <title>Forty What?</title>
 <from>Joe</from>
 <to>Jane</to>
 <body>
  I know that's the answer -- but what's the question?
 </body>
</document>
XML;

$xml=simplexml_load_string($string);
var_dump($xml);
/*
object(SimpleXMLElement)#1 (4) {
  ["title"]=>
  string(11) "Forty What?"
  ["from"]=>
  string(3) "Joe"
  ["to"]=>
  string(4) "Jane"
  ["body"]=>
  string(57) "
  I know that's the answer -- but what's the question?
 "
}
*/

echo $xml->body// I know that's the answer -- but what's the question? 
?>

関連コンテンツ

Q. このサイトの情報はお役に立ちましたでしょうか?

投票する 投票結果を見る

管理人に【web拍手】を送るweb拍手(1行メッセージも送れます♪)

pagetop

polarized women