首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在两个xml标签之间输出?

如何在两个xml标签之间输出?
EN

Stack Overflow用户
提问于 2013-04-09 23:00:24
回答 2查看 164关注 0票数 2

我从来没有见过这样的标签:

代码语言:javascript
复制
<verse sID=".1.1" osisID=".1.1" /> data data <verse eID=".1.1"/> 

因为我觉得应该是这样的:

代码语言:javascript
复制
<verse osisID=".1.1"> data data </verse>

问题是我试图在<verse/> texts <verse/>.之间输出文本,我有大量的xml在这样的开始和结束标记之间显示文本。如果<verse> texts </verse>的话就可以了。如何在Java或PHP中编写代码以输出这些标记之间的文本。我已经用PHP编写了代码。

代码语言:javascript
复制
<?php
$xml = simplexml_load_file("go.xml");

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

它不起作用。我还没有在爪哇尝试过。

下面是示例xml。

代码语言:javascript
复制
<?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>
EN

回答 2

Stack Overflow用户

发布于 2013-04-09 23:03:54

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

代码语言:javascript
复制
    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);

输出

代码语言:javascript
复制
 data data 
票数 0
EN

Stack Overflow用户

发布于 2013-04-09 23:18:01

尝试使用此函数:

代码语言:javascript
复制
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;
}

然后这样叫它:

代码语言:javascript
复制
$start = '/>';
$end = '<verse';
$contents = extractContents($string, $start, $end)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15905453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档