目的 :
特定の「id」を持つネストされた要素を取得するメソッドを作成します。
私が試したこと:
- DOMXpath クラスのクエリ メソッドを使用して、x パス式を含むコードを取得します。空のノード リストが返されるたびに
- '/row[@id=' . $id . ']'
- '//table/row[@id=' . $id . ']'
- '/ / [@id=' . $id . ']'
- DOMDocument::getElementById を試してみて、DOMDocument クラスをインスタンス化した直後に DOMDocument::$validateOnParse を設定しました。これも空のノード リストを返します。
XML の例:
<?xml version="1.0" encoding="UTF-8"?>
<table>
<row id="1">
<job>construction</job>
<age>34</age>
<name>bob</name>
</row>
<row id="2">
<job>construction</job>
<age>34</age>
<name>bob</name>
</row>
<row id="3">
<job>construction</job>
<age>34</age>
<name>bob</name>
</row>
<row id="4">
<job>construction</job>
<age>34</age>
<name>bob</name>
</row>
</table>
Php コード :
Class SimpleORM{
...
public function find($id)
{
settype($id, "int");
$xpath = new DOMXPath($this->_dom);
$expression = '/row[@id=' . $id . ']';
return $xpath->query($expression);
}
}
完全な Php コードはここで読むことができます -> https://github.com/Danoon/SimpleORM/blob/master/SimpleORM.php
質問 :
適切な要素/ノードが返されないのはなぜですか?どうすればこれを達成できますか?
検索機能の呼び出し
$users = new SimpleORM("users");
$result = $users->find(1);