2

我正在尝试将 word2003 xml 文件中的 XML 数据解析为 PHP。所以我读到的所有文章都没有解决我的问题不幸的是,文件的所有结构都有名称空间,我无法进入它们进行解析。我发现并阅读了许多关于获取命名空间数据的文章,但它对我没有任何意义。

我的 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 的内容(这是我的搜索字符串)更改为另一个值,或者将其删除并放入全新的值?如何进入隐藏在命名空间标记中的文本?请注意,即使是根标记也是命名空间的!

提前帮助。

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 回答