【发布时间】:2017-02-27 13:31:55
【问题描述】:
我正在尝试通过以下循环创建一个包含人员及其子女姓名的 XML 文件:
$xml_file = new XMLWriter();
$xml_file->startElement("People");
while ($list_of_people->current != NULL ){
$xml_file->writeElement("Person"); // create a new person
$xml_file->startElement('Person');
$xml_file->writeAttribute('name', $list_of_people->current->name); // add their name as an attribute
if ($list_of_people->current->children != NULL){
while ($list_of_people->current->child_current != NULL){ // if they have children create them as well
$xml_file->writeElement("Person");
$list_of_people->startElement('Person');
$xml_file->writeAttribute('name', $list_of_people->current->child_current->child_name);
$xml_file->endElement();
$list_of_people->current->child_current = $list_of_people->current->child_current->next;
}
}
$xml_file->endElement();
$list_of_people->current = $list_of_people->current->next;
}
如您所见,在输出文件中,我应该有多个名为“Person”的元素,具体取决于列表中有多少人以及其中有多少人有孩子。
我希望最终的 XML 文档看起来像这样的一个示例:
<People>
<Person name="Anna"></Person>
<Person name="Joe">
<Person name="Willy"></Person> // Joe has a child named Willy
</Person>
<Person name="Rob"></Person>
</People>
现在,我关心的是,我怎么知道 $xml_file->startElement('Person');选择了我刚刚创建的当前人员,而不是之前已经创建的任何 Person 元素,因为它们都命名相同?
如果最终 XML 文件中的各个元素具有相同的名称,如何访问它们?
最后,我想保存这个 XML 文档并将其内容打印到标准输出。
谢谢!
【问题讨论】: