2015-03-25 104 views
3

我試圖從Microsoft word文件創建xml文件。我將該文件保存爲XML。但無法解析或獲取內容。它顯示如下PHP word xml解析

<wx:sect><w:p wsp:rsidR="00537F3C" wsp:rsidRPr="00616B5B" wsp:rsidRDefault="005F2CBA" wsp:rsidP="005F2CBA"><w:pPr><w:pStyle w:val="Contents"/></w:pPr><w:r wsp:rsidRPr="00616B5B"><w:t>Contents</w:t></w:r></w:p><w:p wsp:rsidR="001E54C8" wsp:rsidRDefault="001E54C8"><w:pPr><w:pStyle w:val="TOC2"/><w:rPr><w:rFonts w:ascii="Calibri" w:h-ansi="Calibri"/><wx:font wx:val="Calibri"/><w:b w:val="off"/><w:i-cs w:val="off"/><w:noProof/><w:kern w:val="0"/><w:sz w:val="22"/><w:sz-cs w:val="22"/></w:rPr></w:pPr><w:r><w:fldChar w:fldCharType="begin"/></w:r><w:r><w:instrText> TOC \o "1-9" \t "ActHead 1,2,ActHead 2,2,ActHead 3,3,ActHead 4,4,ActHead 5,5, Schedule,2, Schedule Text,3, NotesSection,6" </w:instrText></w:r><w:r><w:fldChar w:fldCharType="separate"/></w:r><w:r><w:rPr><w:noProof/></w:rPr><w:t>Chapter 1—Introduction and core provisions</w:t></w:r> ..... 

如何獲得像標題,小節,部分和其他內容。我試着用下面的代碼

$xml = new DOMDocument(); 
    $xml->load('ITA97Vol01_1-36_WD02_2.xml'); 


    foreach($xml->getElementsByTagName('sect') as $child) { 
     echo "<pre>";print_R($child); 
     echo "</pre>"; 

    } 

是否有任何模式來獲取所需的數據。幫我解決這個問題。

+0

教派是namesapace別名WX,嘗試閱讀其命名空間 – 2015-03-25 05:18:07

+0

@TomerW元素你能解釋或任何示例代碼先生 – Jegan 2015-03-25 05:34:38

+0

使用http://php.net/manual/en/domdocument.getelementsbytagnamens.php – 2015-03-25 06:01:37

回答

0

Tomer W建議用getElementsByTagNameNS函數取代getElementsByTagName。我無法從您的xml片段中告訴Word版本,但您需要wx:sect標籤的命名空間。這樣的地方在上面你的XML,你應該有xmlns:wx="http://schemas...." - 所以只是複製網址爲基於NS標籤名功能:

$xml = new DOMDocument(); 
$xml->load('ITA97Vol01_1-36_WD02_2.xml'); 


foreach($xml->getElementsByTagNameNS('http://schemas....','sect') as $child) { 
    echo "<pre>";print_R($child); 
    echo "</pre>"; 

} 

而使用的標題,我假設你指的是你在第一次使用的標題每節的行。標題也只是存儲在普通的<w:t>...</w:t>標記中,因此您要麼選擇第一個出現的t元素,否則您必須先找到標題樣式,然後在其中選擇文本。

但是對於一個完整的解決方案,你將不得不挖掘整個文件,那裏有很多垃圾,所以你應該只定位已知的元素/標籤。