2012-04-13 7 views
1

간단한 xml을 사용하여 처리하려고하는 xml 문서 (msword 2010에서 생성)가 있습니다. XML의간단한 XML 로딩 중 오류

샘플 :

$content = '/reports/docx_templates/testing2.xml'; 
if(!$simple_xml = simplexml_load_file($content)){ 
    trigger_error('Error reading XML file',E_USER_ERROR); 
} else { 
    echo 'loaded'; 
} 

을 그리고 오류 얻을 :

Message: simplexml_load_file(): I/O warning : failed to load external entity " Test file another paragraph " 

어떤 아이디어를

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<w:document xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 wp14"> 
<w:body> 
    <w:p w:rsidR="005B1098" w:rsidRDefault="005B1098"/> 
    <w:p w:rsidR="00F254A4" w:rsidRDefault="00F254A4"/> 
    <w:p w:rsidR="00F254A4" w:rsidRPr="008475A1" w:rsidRDefault="00C15492" w:rsidP="008475A1"> 
     <w:pPr> 
      <w:jc w:val="center"/> 
      <w:rPr> 
       <w:b/> 
       <w:sz w:val="44"/> 
       <w:szCs w:val="44"/> 
      </w:rPr> 
     </w:pPr> 
     <w:r w:rsidRPr="008475A1"> 
      <w:rPr> 
       <w:b/> 
       <w:sz w:val="44"/> 
       <w:szCs w:val="44"/> 
      </w:rPr> 
      <w:t>Test file</w:t> 
     </w:r> 
    </w:p> 
    <w:p w:rsidR="00C15492" w:rsidRPr="008475A1" w:rsidRDefault="00C15492" w:rsidP="008475A1"> 
     <w:pPr> 
      <w:jc w:val="center"/> 
      <w:rPr> 
       <w:sz w:val="20"/> 
       <w:szCs w:val="20"/> 
      </w:rPr> 
     </w:pPr> 
     <w:r w:rsidRPr="008475A1"> 
      <w:rPr> 
       <w:sz w:val="20"/> 
       <w:szCs w:val="20"/> 
      </w:rPr> 
      <w:t>another paragraph</w:t> 
     </w:r> 
    </w:p> 
</w:body> 
</w:document> 

나는 사용하여 열하려고?

+0

무엇이'$ content'입니까? 파일 ? – ManseUK

+0

유효성 검사기를 통해 XML을 실행 했습니까? [http://validator.w3.org/](http://validator.w3.org/) –

+0

'simplexml_load_file ($ content)'의 처음에 @를 넣으십시오. –

답변

1

나는 SimpleXMLElement 클래스를 선호합니다.

$xml = new SimpleXMLElement(file_get_contents($content)); 

나는 XML 파일과 그 작업을 테스트했다.

편집 : 여기

는 단어 XML 파일을 구문 분석하는 짧은 튜토리얼 : Word XML

+0

당신이 한 일을 게시 해 주시겠습니까? 나는 당신의 솔루션을 시도했지만 아직 실패하고 있습니다. – Rooneyl

+0

나는 이것도 시도해 보았습니다. 그리고 다른 방법으로 저는 빈 객체를 계속 얻었습니다. XML과 관련이 있다고 생각합니다. 네임 스페이스 문제일까요? – Pete

+0

내가 추가 한 사이트를 확인하십시오. 네임 스페이스를 등록하고 XPATH를 통해 요소에 액세스해야합니다. 그리고 그가 문서 요소에 직접 갈 수 있다고 생각해야합니다. – Stony

1

내가 꽤 옳지 않아 PHP의 XML 파서로 계속 뭔가가 있다고 생각.

http://schemas.openxmlformats.org 유효한 웹 주소로 이동하지는 않지만 XML 네임 스페이스 규칙이이를 고집하지 않기 때문에 필요하지 않습니다. 그러나이 페이지

https://bugs.php.net/bug.php?id=60416

을보고 당신은 누군가가 네임 스페이스에 kludge와 함께 문제를 해결하기 위해 관리되는 것을 볼.

원본 질문에 표시된 내용이 성공적으로 실행되었지만 trigger_error를 사용하여 강제로 오류 메시지가 표시되는 것으로 의심됩니다.

댓글이 너무 깁니다.

는 그리고

실행 ... PHP 파일과 같은 디렉토리에 testing2.xml로 XML을 저장 한 후이 코드 그래서 여기 정말 답이 아니다 그것을 만회하기 위해 제안합니다.

<?php 

if (file_exists('testing2.xml')) { 
    $content = file_get_contents('testing2.xml'); 
    $xml = new SimpleXMLElement($content); 
    echo "<pre>";   
    var_dump($xml); 
    echo "</pre>"; 
} else { 
    exit('Failed to open testing2.xml.'); 
}