dongyin2390 2015-06-04 19:10
浏览 101
已采纳

使用php SimpleXMLIterator按顺序打印子元素

I am dealing with the following XML:

<Paragraph>This is a test. This is a test.
<Italic>This is an italicized test</Italic>
This is more tests
 </Paragraph>

I'm trying to pull in the XML, modify it as a text string or HTML code, and spit it back out. I'm running into the issue that I see no way of keeping all this text in its correct order. This is my code:

$xml = "<Paragraph>This is a test. This is a test.
<Italic>This is an italicized test</Italic>
This is more tests
 </Paragraph>";
$itterator = new SimpleXmlIterator($xml);
$non_italicized = $itterator->__toString();
for ($itterator->rewind(); $itterator->valid(); $itterator->next()) {
  $italicized = $itterator->current()->__toString();
}

The output of $non_italicized:

 This is a test. This is a test.
 This is more tests

The output of $italicized:

This is an italisized test

This leaves me no real of way of combinging them together in a regular paragraph with italicized text in the middle. How can I achieve this?

  • 写回答

1条回答 默认 最新

  • dongsuichi6529 2015-06-04 19:44
    关注

    You can do this with DOM:

    $doc = new DOMDocument();
    $doc->loadXML($xml);
    
    foreach ($doc->childNodes->item(0)->childNodes as $i) {
        echo "Element is: " . $i->nodeName . " Value is: " . trim($i->nodeValue) . "
    ";
    }
    

    The output will be:

    Element is: #text Value is: This is a test. This is a test.
    Element is: Italic Value is: This is an italicized test
    Element is: #text Value is: This is more tests
    

    However, it will be easier if the regular text is enclosed in some tags.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?