如何将 XML 命名空间从 Word 文档解析为 PHP


how to parse xml namespaces from word document to php

我正在尝试将 xml 文件中的 XML 数据解析为 PHP。我读到的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(这是我的搜索字符串)的内容更改为另一个值,或者删除它并放置全新的值?如何进入隐藏在命名空间标记中的文本?请注意,即使是根标记也是命名空间的!

提前帮助。

此代码有效,但它会引发大量警告。你可以改用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.');
}
?>