이번에는 PHP가 xml을 구문 분석하고 sql 문을 생성하는 단계에 대해 자세히 설명하겠습니다. php에서 xml을 구문 분석하고 sql 문을 생성하는 데 있어 주의 사항은 무엇입니까? 다음은 실제 사례입니다.
PHP에서 xml을 구문 분석하는 방법은 여러 가지가 있으며 문서에서 검색해 보세요.
오늘 요구 사항이 발생했습니다. 특정 XML에서 노드 속성을 추출한 다음 데이터베이스 테이블의 필드를 업데이트해야 합니다.
아이디어:
XML을 구문 분석하고 모든 노드 속성을 가져옵니다. –> 노드 컬렉션을 반복하고 해당 속성을 가져옵니다. –> SQL 문자열을 연결하여 배열에 저장합니다. 여기서는
xpath가 사용됩니다. 코드를 작성하는 중에 두 가지 문제가 발생했습니다.
1.xml의 기록 경로 속성이 D:xx인 경우 파일을 로드할 수 없습니다. , 따라서 "/"(리눅스 아래) 구분 기호로 변경됩니다.
2. 노드의 속성을 얻으려면 ::attributes를 사용하세요. 편집기는 빨간색으로 계속 메시지를 표시하고 반나절 문서를 찾은 다음 마지막으로 다음을 사용합니다. ->getAttribute() (너무 이상해서 ->previousSibling 및 ->nodeValue를 지원하는 것 같아요.) 문서에 따르면 DOMElement::getAttribute는 직접 오류를 보고합니다.
다음은 다음과 같습니다. 샘플 코드:
<title>xml 转换为 sql</title> <meta http-equiv='content-type' content='text/html; charset=utf-8' /> <style type="text/css"> .tip_info {margin-bottom:10px;} .tip_info span {color:#f00;} </style> <?php $xml = "D:/res/dressConfig.xml"; $doc = new DOMDocument(); $doc->load($xml); $xpath = new DOMXPath($doc); $query = "//i"; $entries = $xpath->query($query); $len = $entries->length; echo "<p class='tip_info'>总共找到:<span>".$len."</span>个节点</p>"; $arr = array(); $idx = 0; while ($idx < $len) { $nodeItem = $entries->item($idx); $id = $nodeItem->getAttribute("i"); $name = $nodeItem->getAttribute("n"); $inf = $nodeItem->getAttribute("inf"); // echo "<p>".$id.'--'.$name.'--'.$inf."</p>"; $idx++; array_push($arr, "update dress_item t SET t.s_name='".$name."',t.s_intro='".$inf."' WHERE t.n_doid=".$id.";"); } $dir = "d:/sql/"; if (!is_dir($dir)) { mkdir($dir); } file_put_contents("d:/sql/dress_item.sql", implode("\n\r", $arr)); echo "生成完毕!"; ?>
데이터는 에서 생성된 데이터베이스 테이블에서 가져온 것이므로 발견된 노드 수는 테이블의 총 레코드 수입니다. 생성 후 내용이 올바른지 살펴본 후 SQL 스크립트를 실행하여 목적을 달성할 수 있습니다.
이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!
추천 도서:
php 및 js로 로컬 exe 애플리케이션을 열 때 매개변수를 전달하는 단계에 대한 자세한 설명
PHP 클래스 리플렉션을 사용하여 종속성 주입을 구현하는 단계에 대한 자세한 설명
위 내용은 PHP가 XML을 구문 분석하고 SQL 문을 생성하는 단계에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!