【问题标题】:How to output between two xml tags?如何在两个xml标签之间输出?
【发布时间】:2013-04-09 15:00:23
【问题描述】:

我从未见过这样的标记:

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

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

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

问题是我试图在&lt;verse/&gt; texts &lt;verse/&gt;. 之间输出文本 我有很多 xml 来显示这些打开和关闭标签之间的文本。如果&lt;verse&gt; texts &lt;/verse&gt; 会起作用。 如何用 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>

【问题讨论】:

    标签: java php xml tags


    【解决方案1】:

    试试这个功能:

    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)
    

    【讨论】:

      【解决方案2】:

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

          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 
      

      【讨论】:

      • 我已经在 w3c.org 验证了所有的 xml。结果是有效的。您的回答有助于如何替换 xml 标签。谢谢。
      • 你的回答似乎暗示这个xml格式不正确,当它是。
      猜你喜欢
      • 1970-01-01
      • 2014-09-15
      • 1970-01-01
      • 2016-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-21
      相关资源
      最近更新 更多