2

word2003 xml ファイルから PHP に XML データを解析しようとしています。私が読んだSOの記事はどれも私の問題を解決しませんでした残念ながら、ファイルのすべての構造には名前空間があり、それらを解析することはできません。名前空間データの取得に関する多くの記事を見つけて読みましたが、何もクリアされていません。

私のxmlファイルは次のようになります:

[...]
<w:body>
    <w:p wsp:rsidR="00FC2E4E" wsp:rsidRPr="00FC2E4E" wsp:rsidRDefault="00ED100D" wsp:rsidP="00FC2E4E">
        <w:pPr>
            <w:spacing w:line="240" w:line-rule="auto"/>
            <w:ind w:left="-1134"/>
            <w:jc w:val="both"/>
            <w:rPr>
                <w:noProof/>
                <w:sz w:val="26"/>
                <w:sz-cs w:val="26"/>
                <w:lang w:val="PL"/>
            </w:rPr>
        </w:pPr>
        <w:r wsp:rsidR="00FC2E4E" wsp:rsidRPr="00FC2E4E">
            <w:rPr>
                <w:noProof/>
                <w:sz w:val="26"/>
                <w:sz-cs w:val="26"/>
                <w:lang w:val="PL"/>
            </w:rPr>
            <w:t>
                           THIS IS MY SEARCH STRING
            </w:t>
        </w:r>
    </w:p>
</w:body>

私のphpファイルもあります:

if (file_exists('file.xml')) {
    $xml = simplexml_load_file('file.xml');
foreach($xml->children() as $child) {
    echo '|' . $child->getName(); <--- this returns nothing!
}

    [...do some modification...]
    $xml->saveXML('/stworz/dupa.xml');
} else {
    exit('Failed to open file.xml.');
}

xml (THIS IS MY SEARCH STRING) のコンテンツを別の値に変更したいですか、それとも削除してまったく新しい値を入れたいですか? 名前空間付きのマークアップに隠されているテキストにアクセスするにはどうすればよいですか? ルート マークアップにも名前空間があることに注意してください。

事前にお手伝い。

4

1 に答える 1

0

このコードは機能しますが、大量の警告がスローされます。代わりにPHPWordを使用できる場合があります。

<?php
if(file_exists('test.xml')) {
    $xml = new DOMDocument();
    $xml->load('test.xml');
    foreach($xml->getElementsByTagName('t') as $child) {
        echo '|' . $child->nodeValue;
    }
    echo $xml->saveXML();
} else {
    exit('Failed to open file.xml.');
}
?>
于 2012-08-15T21:57:17.623 に答える