我从来没有见过这样的标签:
<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/>";
}
?> 它不起作用。我还没有在爪哇尝试过。
下面是示例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>发布于 2013-04-09 23:03:54
简单的解决方案是正则表达式
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-09 23:18:01
尝试使用此函数:
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)https://stackoverflow.com/questions/15905453
复制相似问题