PHPSCHOOL 에서 구한 클래스 음~ XML 받아 오는 정보를 배열 형태로 처리하여 뿌려주는 듯!~ 유용함!~
아래 원본 소스를 참고 하길 바라며~ 나는 아파치2 서버에 트래픽 모듈을 올려 XML 정보를 파싱하여
처리 하였다~ 내가 작성한 예저 소스도 같이 올림!~
원본소스 :
class xml_load extends DOMDocument{
function xml_read($xml_file){
$this->preserveWhiteSpace = false;
$this->load($xml_file);
return $this->xml_array($this);
}
function xml_array($dom){
$date= array();
foreach($dom->childNodes as $nc){
//해당 노드에 속성 있면 첨부할것.
if($nc->hasAttributes()){
$res['$nc->nodeName.@attributes']= array();
$attributes = $nc->attributes;
foreach ($attributes as $index=>$attr) {
$res['$nc->nodeName.@attributes'][$attr->name] = $attr->value;
}
$date = $res;
}
//자식 노드 추가
if($nc->hasChildNodes()){
//################//
//이름이 똑같은 경우에는 숫자로 배분할것.
//현재 노드위치랑 다음 노드에 이름이 같은 경우 숫자로 배분.
if((($nc->nodeName) == ($nc->nextSibling->nodeName)) && ($dom->childNodes->length > 1)){
$date[$nc->nodeName][] = $this->xml_array($nc);
}
//전에 노드랑 현제 노드랑 똑같은 경우 숫자로 배분.
elseif(($nc->previousSibling->nodeName)== ($nc->nodeName) &&
($dom->childNodes-length > 1)){
$date[$nc->nodeName][] = $this->xml_array($nc);
}
//################//
//혼자만 딸랑 있을 경우.
else{
$date[$nc->nodeName] = $this->xml_array($nc);
}
}
//데이터 넣기.
else{
$date=$nc->nodeValue;
}
}
return $date;
}
}
//사용법..
$domdoc = new xml_load;
$date = $domdoc->xml_read("xml 파일 위취");
echo"<pre>";
print_r($date);
?>
접기
아파치2 트래픽 모듈 XML 정보 파싱 :
<style type="text/css">
@import url("white.css");
</style>
<?
class xml_load extends DOMDocument{
function xml_read($xml_file){
$this->preserveWhiteSpace = false;
$this->load($xml_file);
return $this->xml_array($this);
}
function xml_array($dom){
$date= array();
foreach($dom->childNodes as $nc){
//해당 노드에 속성 있면 첨부할것.
if($nc->hasAttributes()){
$res['$nc->nodeName.@attributes']= array();
$attributes = $nc->attributes;
foreach ($attributes as $index=>$attr) {
$res['$nc->nodeName.@attributes'][$attr->name] = $attr->value;
}
$date = $res;
}
//자식 노드 추가
if($nc->hasChildNodes()){
//################//
//이름이 똑같은 경우에는 숫자로 배분할것.
//현재 노드위치랑 다음 노드에 이름이 같은 경우 숫자로 배분.
if((($nc->nodeName) == ($nc->nextSibling->nodeName)) && ($dom->childNodes->length > 1)){
$date[$nc->nodeName][] = $this->xml_array($nc);
}
//전에 노드랑 현제 노드랑 똑같은 경우 숫자로 배분.
elseif(($nc->previousSibling->nodeName)== ($nc->nodeName) && ($dom->childNodes->length > 1)){
$date[$nc->nodeName][] = $this->xml_array($nc);
}
//################//
//혼자만 딸랑 있을 경우.
else{
$date[$nc->nodeName] = $this->xml_array($nc);
}
}
//데이터 넣기.
else{
$date=$nc->nodeValue;
}
}
return $date;
}
}
//사용법..
$domdoc = new xml_load;
$date = $domdoc->xml_read("http://noirzo.iptime.org/cband-status-me/?xml");//xml 파일.. 적을것..
$total = $date[mod_cband][Virtualhosts][yt][limits][total];
$traffic = $date[mod_cband][Virtualhosts][yt][usages][total];
?>
<div class="HG_trafficViewer">
<h2 class="title"><span>트래픽 사용량</span></h2>
<div class="description">Traffic = <?php echo round(($traffic/$total)*100,0); ?>% (<?php echo round($traffic/1000,0); ?> MIB / <?php echo round($total/1000/1000,0); ?> GIB)</div>
<div class="graph">
<div class="used" style="width:<?php echo round(($traffic/$total)*100,0); ?>%;"></div>
<div class="rest" style="width:<?php echo 100 - round(($traffic/$total)*100,0); ?>%;"></div>
<div class="clear"></div>
</div>



덧글