我的问题与将XML数据放到用PHP创建的特定文件上有关。
说这是我正在使用的XML,一个名为music.xml的文件:
<XML_DATA item=“MusicBands”>
<Musicians>
<Person instrument="guitar">Clapton, Eric</Person>
<Person instrument="guitar">Hendrix, Jimi</Person>
<Person instrument="bass">McCartney, Paul</Person>
<Person instrument="drums">Moon, Keith</Person>
<Person instrument="guitar">Page, Jimmy</Person>
</Musicians>
</XML_DATA>
这样,我加载了feed,并根据“instrument”属性创建了PHP文件:
// Loads the xml feed
$xml = simplexml_load_file("http://example.com/music.xml");
$instrument_by_names = $xml->Musicians->Person;
// This is to make sure repeat attribute values don't repeat
$instrument_loops = array();
foreach($instrument_by_names as $instrument_by_name){
$instrument_loops[] = (string) $instrument_by_name->attributes()->instrument;
}
$instrument_loops = array_unique($instrument_loops);
// This is where I need help
foreach($instrument_loops as $instrument_loop){
$page_url = $instrument_loop.'.php';
$my_file = $page_url;
$handle = fopen($my_file, 'w') or die('Cannot open file: '.$my_file);
$page_data = 'Here lays the issue.';
fwrite($handle, $page_data);
}
这样可以毫无困难地创建guitar.php,bass.php和drums.php。 $ page_data也写在页面上,但这是我难倒的地方。
我想在每个页面上放置相应的节点值。因此,“Clapton,Eric”,“Hendrix,Jimi”,“Page,Jimmy”将出现在guitar.php上,“McCartney,Paul”将出现在bass.php上,“Moon,Keith”出现在drums.php上。我该怎么做呢?
答案 0 :(得分:0)
(string) $instrument_by_name
应包含该节点的文本(人名),$instrument_by_names
已填充$xml->Musicians->Person
。
$instrument_by_names
应该被称为$persons
,因为您正在处理<persons>
元素,然后在循环中通过{{获取@instrument
属性值1}}
实际上,您要么必须改进$instrument_by_name->attributes()->instrument
结构,要么使用xpath来查询XML结构。
$instrument_loops