gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:49:06 33 4
gpt4 key购买 nike

我有一个 .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/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com