Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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 - Fatal编程技术网

PHP XML解析问题

PHP XML解析问题,php,xml,Php,Xml,我成功地编写了一个解析PHP文件的站点,并通过用HTML重放来处理打开/关闭标记 问题是我只知道如何解析整个文件。如果我只想解析文件的一部分呢 我已经知道如何循环遍历XML标记以找到我想要的部分,但我不知道如何将其转换到我已经拥有的解析代码中 这是我现在使用的解析代码: $p = xml_parser_create(); //Set the handling functions xml_set_element_handler ($p, 'handle_open_element', 'hand

我成功地编写了一个解析PHP文件的站点,并通过用HTML重放来处理打开/关闭标记

问题是我只知道如何解析整个文件。如果我只想解析文件的一部分呢

我已经知道如何循环遍历XML标记以找到我想要的部分,但我不知道如何将其转换到我已经拥有的解析代码中

这是我现在使用的解析代码:

$p = xml_parser_create();

//Set the handling functions

xml_set_element_handler ($p, 'handle_open_element', 'handle_close_element');
xml_set_character_data_handler ($p, 'handle_character_data');

// read the file:

    $file = 'books3.xml';
    $fp = @fopen ($file, 'r') or die ("Could not open a file called '$file' .\n</body>\n</html>");
    while ($data = fread ($fp, filesize($file))) {
    xml_parse ($p, $data, feof($fp));
    }

    //free up parser
    xml_parser_free($p);
$p=xml\u parser\u create();
//设置处理功能
xml_set_element_handler($p,'handle_open_element','handle_close_element');
xml_set_character_data_handler($p,'handle_character_data');
//读取文件:
$file='books3.xml';
$fp=@fopen($file,'r')或die(“无法打开名为$file的文件”。\n\n”);
而($data=fread($fp,filesize($file))){
xml_解析($p,$data,feof($fp));
}
//释放解析器
无xml解析器($p);
Books3.xml就是这个文件。上面有处理开始和结束标记的函数。我如何编辑它,以便只向函数发送books3.xml的一部分

有什么想法吗


感谢您的帮助

我相信XML解析器函数的级别非常低,而且有点复杂。如果只需要解析小的XML文件,那么使用SimpleXML函数可能会容易得多。它们允许您访问类似XML的嵌套PHP数据结构


如果需要面向流的解析扩展(大文件),XMLReader可能是更简单的方法

感谢您的回复…实际上我使用XML解析器是因为它很简单…我需要做的是读取嵌套标记的结构。。。我以前使用simpleXML的经验是,它只向我提供数据,而不是标签本身。有没有一种方法可以使用simpleXML循环遍历标记,直到到达我想要的位置,然后解析该部分?嗨,Craig,您可以使用XPath访问XML文件中的任何节点或节点集。Xpath是一种非常有用的XML查询语言。您可以在SimpleXML中使用Xpath表达式,如下所述:Xpath本身教程您可以在web上找到一些。