Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 加载简单XML时出错_Php_Xml_Simplexml - Fatal编程技术网

Php 加载简单XML时出错

Php 加载简单XML时出错,php,xml,simplexml,Php,Xml,Simplexml,我有一个xml文档(由msword 2010生成),我正试图使用简单的xml来处理它 xml示例: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <w:document xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:mc="http://schemas.openxmlformats.org/

我有一个xml文档(由msword 2010生成),我正试图使用简单的xml来处理它

xml示例:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 wp14">
<w:body>
    <w:p w:rsidR="005B1098" w:rsidRDefault="005B1098"/>
    <w:p w:rsidR="00F254A4" w:rsidRDefault="00F254A4"/>
    <w:p w:rsidR="00F254A4" w:rsidRPr="008475A1" w:rsidRDefault="00C15492" w:rsidP="008475A1">
        <w:pPr>
            <w:jc w:val="center"/>
            <w:rPr>
                <w:b/>
                <w:sz w:val="44"/>
                <w:szCs w:val="44"/>
            </w:rPr>
        </w:pPr>
        <w:r w:rsidRPr="008475A1">
            <w:rPr>
                <w:b/>
                <w:sz w:val="44"/>
                <w:szCs w:val="44"/>
            </w:rPr>
            <w:t>Test file</w:t>
        </w:r>
    </w:p>
    <w:p w:rsidR="00C15492" w:rsidRPr="008475A1" w:rsidRDefault="00C15492" w:rsidP="008475A1">
        <w:pPr>
            <w:jc w:val="center"/>
            <w:rPr>
                <w:sz w:val="20"/>
                <w:szCs w:val="20"/>
            </w:rPr>
        </w:pPr>
        <w:r w:rsidRPr="008475A1">
            <w:rPr>
                <w:sz w:val="20"/>
                <w:szCs w:val="20"/>
            </w:rPr>
            <w:t>another paragraph</w:t>
        </w:r>
    </w:p>
</w:body>
</w:document>
并获取错误:

Message: simplexml_load_file(): I/O warning : failed to load external entity " Test file another paragraph "

有什么想法吗?

我更喜欢SimpleXMLElement类

$xml = new SimpleXMLElement(file_get_contents($content));
我已经用您的XML文件及其工作原理对其进行了测试

编辑:


下面是一个解析word XML文件的简短教程:

我认为PHP的XML解析器存在一些不太正确的地方

未转到有效的web地址。。。。但它并不一定要这样做,因为XML名称空间规则并不坚持这样做。但是,请看这一页

您可以看到,有人通过名称空间上的混乱解决了您的问题

我怀疑您最初的问题所显示的可能是代码的成功运行,但带有一条错误消息,这是您通过使用trigger\u error强制执行的

这篇评论太长了

这不是一个真正的答案,所以这里有一个建议来弥补它

将xml另存为testing2.xml并保存在与php文件相同的目录中后,运行此代码

<?php

if (file_exists('testing2.xml')) {
    $content = file_get_contents('testing2.xml');
    $xml = new SimpleXMLElement($content );
    echo "<pre>";        
    var_dump($xml );
    echo "</pre>"; 
} else {
    exit('Failed to open testing2.xml.');
}

什么是
$content
?文件?您是否已通过验证程序运行XML?将@放在
simplexml\u load\u file($content)
$content是文件,它存在,权限为0777@Rooneyl你能在设置$content的地方添加代码吗?我猜你没有正确地摆脱斜杠。你能发布你所做的吗,我尝试过你的解决方案,但仍然失败。我尝试过这个方法,也尝试过另一种方法,但我一直得到一个空对象。我认为这与XML有关。这可能是名称空间问题吗?请检查我添加的站点。您必须注册名称空间并通过XPATH访问元素。您应该考虑,他有可能直接进入document元素。
<?php

if (file_exists('testing2.xml')) {
    $content = file_get_contents('testing2.xml');
    $xml = new SimpleXMLElement($content );
    echo "<pre>";        
    var_dump($xml );
    echo "</pre>"; 
} else {
    exit('Failed to open testing2.xml.');
}