2

我从未见过这样的标签:

<verse sID=".1.1" osisID=".1.1" /> data data <verse eID=".1.1"/> 

因为我认为它应该是这样的:

<verse osisID=".1.1"> data data </verse>

问题是我试图在<verse/> texts <verse/>. 我有很多 xml 之间输出文本来显示这些打开和关闭标签之间的文本。如果<verse> texts </verse>. 如何用 Java 或 PHP 编写代码以在这些标签之间输出文本。我已经用 PHP 编写了代码。

<?php
$xml = simplexml_load_file("go.xml");

foreach ($xml->osisText->div->p->verse as $verse) {
   echo $verse."<br/><br/>";
}
?> 

这没用。我还没有尝试过Java。
下面是示例 xml。

<?xml version="1.0" encoding="UTF-8"?>
<osis xmlns="http://www.bibletechnologies.net/2003/OSIS/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bibletechnologies.net/2003/OSIS/namespace http://www.bibletechnologies.net/osisCore.2.1.1.xsd">
    <osisText xml:lang="en">
        <chapter sID=".1" osisID=".1"/>
        <div type="section">
            <p>
                <verse sID=".1.1" osisID=".1.1" />
                Hello Verse One
                <verse eID=".1.1" osisID=".1.1" />
                <verse sID=".1.2" osisID=".1.2" />
                Hello Verse Two
                <verse eID=".1.2" osisID=".1.2" />
            </p>
            <p>
                <verse sID=".1.3" osisID=".1.3" />
                Hello Verse One
                <verse eID=".1.3" osisID=".1.3" />
                <verse sID=".1.4" osisID=".1.4" />
                Hello Verse Two
                <verse eID=".1.4" osisID=".1.4" />
            </p>
        </div>
    </osisText>
</osis>
4

2 回答 2

0

简单的解决方案是正则表达式

    String s = "<verse sID=\".1.1\" osisID=\".1.1\" /> data data <verse eID=\".1.1\"/>"; 
    s = s.replaceAll("<verse .+ />(.+)<verse .+/>", "$1");
    System.out.println(s);

输出

 data data 
于 2013-04-09T15:03:53.583 回答
0

尝试使用此功能:

function extractContents($string, $start, $end)
{
    $pos = stripos($string, $start);
    $str = substr($string, $pos);
    $str_two = substr($str, strlen($start));
    $second_pos = stripos($str_two, $end);
    $str_three = substr($str_two, 0, $second_pos);
    $extractedContents = trim($str_three);
    return $extractedContents;
}

然后这样称呼它:

$start = '/>';
$end = '<verse';
$contents = extractContents($string, $start, $end)
于 2013-04-09T15:18:00.893 回答