XML 및 관련 PHP에서 비 네임 스페이스 값을 가져 오는 것과 같은 방법으로 네임 스페이스 값을 얻는 방법은 무엇입니까? 나는 이것에 관해 많은 다른 SE QAs를 언급하고 있었지만, 올바르게 이해할 수는 없었다. 도움을 주시면 감사하겠습니다. :)네임 스페이스와 비 네임 스페이스 XML의 값을 얻는 방법
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:psg="http://b3000.example.net:3000/psg_namespace/">
<channel>
<title>Example</title>
<description>example stuff</description>
<item>
<psg:eventId>406589</psg:eventId>
<psg:duration>3482</psg:duration>
</item>
</channel>
</rss>
$xml = new SimpleXMLElement($source, null, true);
foreach($xml->channel->item as $entry){
echo $entry->title; // This works
echo $entry->description; // This works
echo $entry->item->duration // Pseudo of what I need
}
재생 시간은 어떻게 되나요? 그것은 내가 실제로 찾고 있던 대답은 아니었지만 이와 같은 변화 나의 시도가
$namespaces = $item->getNameSpaces(true);
$psg = $item->children($namespaces['psg']);
업데이트
실패, 나는 내가 가지에 이르는 노력하고있어 첫 번째 대답을 받아 들여야 실제 문제 - "운영자 오류"! 이것은 작동하지 않습니다 ... 내 문제는 그것을 파악하려고 노력했다. 나는 echo print_r($psg, true)
으로 디버깅을하고 있었다. 그 결과를 SimpleXmlObject로 보여주었습니다. 그런 다음 그 속성을 얻는 방법을 쫓아갔습니다. 그저 속성을 지정하는 대신에 속성을 지정하는 것뿐이었습니다. 이를 달성하기
foreach($xml->channel->item as $entry){
$psg = $item->children($ns['psg']);
$title = (string) $item->title;
$duration = (string) $psg->duration;
}
는 당신이, 당신이 네임 스페이스를 전달하고 접두사의 IT 말할 곳 http://php.net/manual/en/simplexmlelement.children.php에서 방법'children'를 사용하여 시도 되세요 그 노드에가? – Andy
안녕하세요. 이 사이트의 컨벤션은 질문과 답변이 분리 된 상태로 유지된다는 것입니다. [그것이 자신의 질문에 대답하는 것을 의미한다고해도] (http://stackoverflow.com/help/self-answer). 그래서 당신이 추가 한 "업데이트"는 정말로 답이되어야합니다. 그러면 미래의 독자들에게 이것이 당신의 문제를 해결 한 것을 보여주기 위해 받아 들일 수 있습니다. Robbie Averill의 대답을 상향 조정하여 도움이되었다고 표시 할 수 있습니다. – IMSoP