이 웹 페이지에는 XML 데이터를 기반으로 페이지에서 div를 다시 만들 수있는 PHP 스크립트가 있습니다. 이 스크립트는 <body> </body>
안에있는 HTML 페이지에서 직접 호출됩니다.XML SimpleXMLElement가 노드를 반환합니다. DOMXPath가 오류를 반환합니다.
<body>
<div id="page" class="demo">
</div>
<?php
// script for recreating divs calls SimpleXMLElement or DOMXPath
?>
</body>
SimpleXMLElement로 XML 노드를 가져 오면 오류가없고 노드가 반환됩니다. 대신 DOMXPath를 시도하면 오류가 발생합니다.
그러면 노드가 반환됩니다.
$nodes = new SimpleXMLElement('communities.xml', null, true);
foreach($nodes as $node) // loop through
{
//restore divs from node information
}
이것은 노드를 반환하지 않으며 오류를 제공합니다.
$dom = new DOMDocument();
$dom->load('communities.xml');
$xpath = new DOMXPath($dom);
$nodes = $xpath->query('COMMUNITY');
foreach($nodes as $node) // loop through
{
//restore divs from node information
}
xpath를 사용하여 생각한 노드에서 자세한 정보를 얻으려면 스크립트를 확장하십시오. 표시하고자하는 추가 정보는 다음과 같습니다. NAME : div (Google.com)에 포함 된 각 URL에 표시 할 텍스트, URLC : 텍스트 (http://google.com)에 해당하는 url. XML 파일에는 이와 같은 노드가 있습니다.
<?xml version="1.0" encoding="ISO-8859-1" ?>
<COMMUNITIES>
<COMMUNITY ID="c000010">
<NAME>New000010</NAME>
<TOP>50</TOP>
<LEFT>50</LEFT>
<WIDTH>150</WIDTH>
<HEIGHT>150</HEIGHT>
<URLS>
<URL ID="u000038">
<NAME>Google.com</NAME>
<URLC>http://google.com</URLC>
</URL>
</URLS>
</COMMUNITY>
</COMMUNITIES>
이상한 문제
다른 곳, 자바 스크립트 기능에서 아약스 호출에 나는 아무 문제없이 XPath를 가진 XML 파일에서 정보를 얻을 수 있다는 것입니다. 왜 그런 상황에서 DOMXPath 메서드가 작동하지 않습니까?편집 * 새 정보
는 HTML 페이지에서 아약스를 통해 호출 PHP 파일입니다. 이것이 SimpleXMLElement가 작동하는 곳입니다. 하지만 새로운 DOMdocument()
을 만들려고하면 xpath를 호출하십시오. 새 DOM 문서가 만들어지지 않습니다.
<?php
function get_nodes() {
// load SimpleXML
/* $nodes = new SimpleXMLElement('communities.xml', null, true); */
$dom = new DOMDocument();
$dom->load('communities.xml');
// get document element
$xpath = new DOMXPath($dom);
$nodes = $xpath->query("//COMMUNITY");
foreach($nodes as $node) // loop through
{
echo "<div id = '".$node['ID']."' class= 'comdiv ui-widget-content' style = 'top: ".$node->TOP."; left: ".$node->LEFT."; width: ".$node->WIDTH.";
height: ".$node->HEIGHT.";'> \n"; echo " <p class = 'comhdr editableText ui-widget-header'>".$node->NAME."</p>\n";
echo " <a href='#' onClick=\"delete_div('".$node['ID']."');\">Delete</a> \n";
echo " <a href='#' onClick=\"add_url('".$node['ID']."');\">Add URL</a> \n";
echo "</div> \n";
echo "<script type='text/javascript'>\n";
echo " $('#".$node['ID']."').resizable();\n";
echo " $('#".$node['ID']."').draggable();\n";
echo " $('#".$node['ID']."').draggable('option', 'handle', '.comhdr');\n";
echo "</script>\n";
}
echo "<script type='text/javascript'>\n";
echo " $('.comhdr').editableText();\n";
echo "</script>\n";
return;
}
echo get_nodes();
?>
어떤 오류가 발생합니까? – Gordon
이상하게도 오류는 없지만 DOMXPath가 노드를 찾지 못하는 것 같습니다. – user823527