我从未见过像这样的标记:
<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>
答案 0 :(得分: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
答案 1 :(得分: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)