php - 使用 php 从 .USX 文件中获取数据

标签 php xml

我有一个 .usx 文件,我想相应地从中获取数据。但是现在找到任何方法来做到这一点。请帮帮我。 usx file link

我试过下面的代码

$xml=simplexml_load_file("uploads/American-Standard-Version-Bible-master/usx/01-GEN.usx") or die("Error: Cannot create object");

foreach($xml->children() as $book)
{
    // echo "<pre>";
    // print_r($book);

     echo "Book Name:".$book->attributes()->code."<br/>";
    if($book->attributes()->number != "" )
    {
         echo "chapter : ".$book->attributes()->number."<br />";
    }
    foreach ($book->verse as $value) {
      // echo "<pre>";
      // print_r($value);
       echo "Verses Number : ".$value->attributes()->number."<br />";
    }

    echo "book : ".$book."<br />";
    echo "<hr/>";


}

}

输出: this is the output

我想一节一节地输出而不是一次全部输出

最佳答案

问题可能在于 SimpleXML 无法让您对结构简单的 XML 进行足够的控制。所以试图在 <verse> 之间获取文本标签很难。相反,如果您使用 DOMDocument ,这对您的文档有更多的细节和控制。

下面的代码只是通读整个文档并主要检查节点名称以确定它应该显示的内容 - 所以对于 <chapter>元素,它将输出数字属性。唯一的区别是,在查看主 <para> 时包含 <verse> 的元素和文本混合在一起,它会查找 XML_TEXT_NODE 的节点类型,如您所料,它是经文,因此它只输出此时的内容。

$dom = new DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->load("01-GEN.usx");

foreach ( $dom->documentElement->childNodes as $element )    {
    if ( $element->nodeName == "book" )    {
        echo "Book Name:".$element->getAttribute("code")."<br/>";
    }
    else if ( $element->nodeName == "chapter" )    {
        echo "chapter:".$element->getAttribute("number")."<br/>";
    }
    else if ( $element->nodeName == "para" )    {
        foreach ( $element->childNodes as $verse )    {
            if ( $verse->nodeName == "verse" )    {
                echo "verse:".$verse->getAttribute("number")."<br/>";
            }
            else if ( $verse->nodeType == XML_TEXT_NODE )   {
                echo $verse->nodeValue."<br/>";
            }
        }
    }
}

关于php - 使用 php 从 .USX 文件中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52341903/

相关文章:

java - 使用 JAXB 将多个 XML 元素的内容提取为文本

ios - 使用 SWXMLHash 反序列化 xml 时处理丢失的属性

php - Laravel Route 传递额外的变量

xmllint DTD 验证语法

php - 如何手动修剪和重启 php-resque worker

php - PHP文件上传错误(UPLOAD_ERR_PARTIAL)/$ _FILES为空或具有空的“tmp_name”

java - 如何使用 testNG 从 selenium 中的 xml 传递单选按钮值

java - 模拟器: Process finished with exit code -1073741511 (0xC0000139) Andrioid Studio

php - 使用 Doxygen 或 PHPDoc 记录获取/发布参数

php - 如何让这些 PHP 包含工作?