是否有人有遞歸函數的一些經驗?我試圖將一個XML文件解析成對象(在PHP中)(稍後在drupal中使用它) 我寫的代碼在第一個「children」節點幾乎總是相同之後(請參閱下面)。 只有2件事情的變化是從xpath的鏈接(什麼不應該那麼困難)和創建動態對象 - 變量(如果存在的話)。
第一個主題的代碼(整個事情是一個療程)
「$用品 - >的ident < - 衆所周知,因爲你是在foreach
$ resulty = $ xpaths-> xpath(「/ org.olat.course.Structure/rootNode/children/[ident = '$ item-> ident']/children/ [type ='st'or type ='sp'或輸入= 'bc']「);
foreach ($resulty as $itemy) { $SubjectObject = new subject(); // isnt 100% correct but doesn't matter now $SubjectObject->getSubjectFolders($FolderObject); $SubjectObject->setSubjectId(isset($item->SubjectId) ? (string) $item->SubjectId: null); $SubjectObject->setSubjectShortTitle(isset($item->SubjectName) ? (string) $item->SubjectName: null); $ChapterObject->setSubject($SubjectObject); }
現在 - 如果我想從從課件比這的對象時的主題將是
$ resulty = $ xpaths->的XPath(「/組織.olat.course.Structure/rootNode/children/[ident ='$ item-> ident']/children/ [type ='st'or type ='sp'or type ='bc']「);
foreach ($resulty as $itemy) {
$SubjectObject = new subject();
$SubjectObject->getSubjectFolders($FolderObject);
$SubjectObject->setSubjectId(isset($itemy->SubjectId) ? (string) $itemy->SubjectId: null);
$SubjectObject->setSubjectShortTitle(isset($itemy->SubjectName) ? (string) $itemy->SubjectName: null);
$resultz = $xpaths->xpath("/org.olat.course.Structure/rootNode/children/*[ident = '$item->ident']children/*[ident = '$itemy->ident']/children/*[type = 'st' or type = 'sp' or type = 'bc']");
foreach ($resultz as $itemz) {
$SubSubjectObject = new subject();
$SubSubjectObject->getSubjectFolders($FolderObject);
$SubSubjectObject->setSubjectId(isset($itemz->SubjectId) ? (string) $itemz->SubjectId: null);
$SubSubjectObject->setSubjectShortTitle(isset($itemz->SubjectName) ? (string) $itemz->SubjectName: null);
$resulta = $xpaths->xpath("/org.olat.course.Structure/rootNode/children/*[ident = '$item->ident']/children/*[ident = '$itemy->ident']/children/*[ident = '$itemz->ident']/children/*[type = 'st' or type = 'sp' or type = 'bc']");
foreach ($resulta as $itema) {
$SubSubSubSubjectObject= new subject();
$SubSubSubSubjectObject->getSubjectFolders($FolderObject);
$SubSubSubSubjectObject->setSubjectId(isset($itema->SubjectId) ? (string) $itema->SubjectId: null);
$SubSubSubSubjectObject->setSubjectShortTitle(isset($itema->SubjectName) ? (string) $itema->SubjectName: null);
(and so on)
$SubSubSubjectObject->setSubject($SubSubSubSubjectObject);
}
$SubjectObject->setSubject($SubSubjectObject);
}
$ChapterObject->setSubject($SubjectObject);
}
這裏是XML樹(例如)
<Structure>
<rootnode>
<CursusName>History</CursusName>
<CursusId>100001</CursusId>
<children>
<childNode>
<SubjectName>World War 1</SubjectName>
<SubjectId>100002</SubjectId>
<children>
<childNode>
<SubjectName>World War 1.1</SubjectName>
<SubjectId>100016</SubjectId>
<children>
<childNode>
<SubjectName>World War 1.1.1</SubjectName>
<SubjectId>100032</SubjectId>
<children>
<childNode>
<SubjectName>World War 1.1.1.1</SubjectName>
<SubjectId>100065</SubjectId>
</children>
</childNode>
</children>
+<children></children>
</childNode>
</children>
+<children></children>
</childNode>
+<childNode></childNode>
</children>
+<children></children>
</childNode>
+<childNode></childNode>
+<childNode></childNode>
</children>
+<visibility></visibility>
+<accessibility></accessibility>
</rootnode>
<version>1</version>
</Structure>
SO
有人可以幫助眉? 有人知道如何解決對象的問題嗎? 一種foreach/while循環創建對象?並將它們提取到他的父對象中?
遺憾的長期職位及代碼,所有的行
親切的問候
迪特
親切的問候
我認爲你需要正確地格式化你的代碼... – ThiefMaster 2012-03-28 20:50:02
對不起,我笑了。 – 2012-03-28 21:12:30