>  기사  >  백엔드 개발  >  php에서 xml을 파싱하고 sql문을 생성하는 구현방법

php에서 xml을 파싱하고 sql문을 생성하는 구현방법

小云云
小云云원래의
2018-02-05 09:17:551807검색

PHP에서 xml을 구문 분석하는 방법은 여러 가지가 있습니다. 문서에는 검색만으로 모든 방법을 찾을 수 있습니다.

오늘 요구 사항이 발생했습니다. 특정 XML에서 노드 속성을 추출한 다음 데이터베이스의 특정 테이블에 있는 필드를 업데이트해야 합니다. 이 기사에서는 주로 PHP가 XML을 구문 분석하고 SQL 문을 생성하는 방법을 소개하며, XML 형식 파일의 읽기, 구문 분석 및 SQL 문자열 접합과 관련된 PHP의 작업 기술을 참조하면 도움이 될 수 있습니다.

아이디어:

XML을 구문 분석하고 모든 노드 속성을 가져옵니다. –> 노드 컬렉션을 반복하고 해당 속성을 가져옵니다. –> SQL 문자열을 연결하여 배열에 저장합니다. 문자열을 특정 파일에 저장합니다. 여기에는

xpath가 사용됩니다. 코드를 작성하는 과정에서 두 가지 문제가 발생했습니다.

1.xml의 기록 경로 속성이 D:xx인 경우 파일을 로드할 수 없습니다. .. "/"(Linux에서 구분됨)로 변경됩니다. 2. 노드의 속성을 가져오고 ::attributes를 사용하면 편집기가 빨간색 프롬프트를 유지하고 반나절 문서를 찾은 다음 마지막으로 ->getAttribute(를 사용합니다. ) (너무 이상해서 ->previousSibling 및 ->nodeValue를 지원한다고 합니다.) 문서에 따르면 DOMElement::getAttribute가 직접 오류를 보고한다고 합니다.

다음은 샘플 코드입니다. :

<title>xml 转换为 sql</title>
<meta http-equiv=&#39;content-type&#39; content=&#39;text/html; charset=utf-8&#39; />
<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=&#39;tip_info&#39;>总共找到:<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.&#39;--&#39;.$name.&#39;--&#39;.$inf."</p>";
  $idx++;
  array_push($arr, "update dress_item t SET t.s_name=&#39;".$name."&#39;,t.s_intro=&#39;".$inf."&#39; 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 스크립트를 실행하여 목적을 달성할 수 있습니다.

관련 권장 사항:

SQL 문을 자동으로 생성하는 방법

여러 키워드와 여러 필드가 포함된 SQL 문을 생성하는 PHP 함수

PowerDesigner는 Oracle을 연결하여 SQL 문을 생성합니다

위 내용은 php에서 xml을 파싱하고 sql문을 생성하는 구현방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.