2015-03-25 4 views
3

Я пытаюсь создать файл xml из файла слов Microsoft. Я сохранил файл слова как XML. Но не удается разобрать его или получить его содержимое. Он показан нижеPHP word xml parsing

<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, попробуйте прочитать элемент с его пространством имен –

+0

@TomerW Можете ли вы объяснить или любой образец кода сэр – Jegan

+0

использование http://php.net/manual/en/domdocument.getelementsbytagnamens.php –

ответ

0

Что предлагает Tomer W, замените getElementsByTagName на функцию getElementsByTagNameNS. Я не могу сказать версию Word из вашего xml-фрагмента, но вам потребуется пространство имен для тэгов wx: sect. так где-то выше в вашем XML вы должны иметь xmlns:wx="http://schemas...." - так просто скопировать, что URL для функции на основе 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, следующего за новым разделом, либо вам сначала нужно будет найти стиль заголовка, а затем выбрать текст.

Но для полного решения вам придется прорыть полный файл, там много мусора, поэтому вы должны ориентироваться только на известные элементы/теги.