【问题标题】:How can I parse XML while keeping the original order of the word in php?如何在保持 php 中单词的原始顺序的同时解析 XML?
【发布时间】:2017-06-15 13:22:55
【问题描述】:

如何在保持原始单词顺序的同时解析类似于此处显示的 xml?我的目标是只提取第一个<span>-tag 和<strong>-tag 的内容,但是单词的顺序应该保持不变(输出应该是:The Bank for International Settlements [BIZ])。我尝试使用内置的 php 解析器(XML DOM 和 SimpleXML - Get),但是我无法保持单词的顺序。

<span class="full_collocation">
    the<strong class="tilde">Bank</strong> for International Settlements
</span> 
<span class="full_collocation">
    [<span class="or"><acronym title="or">or</acronym></span> BIZ]
</span>

【问题讨论】:

标签: php xml xml-parsing


【解决方案1】:

使用 DOMDocument,您应该能够轻松获得所需的值。看看这个例子:

$xmlString = '<root>
  <span class="full_collocation">
    the<strong class="tilde">Bank</strong> for International Settlements
  </span>
  <span class="full_collocation">
    [<span class="or"><acronym title="or">or</acronym></span> BIZ]
  </span>
</root>';

$dom = new DOMDocument();
$dom->loadXML($xmlString);
foreach($dom->documentElement->childNodes as $childNode) {
    echo trim($childNode->textContent); // prints "theBank for International Settlements" and "[or BIZ]"
}

【讨论】:

  • 这是我能够实现的,但是在这个过程中“银行”这个词丢失了,这是需要的。
  • 这个很有帮助,但是有没有办法只输出某些标签的内容呢?就我而言,作为根标签和所有强标签的直接子级的跨度标签? (我不想要“或”)
  • 您可以使用DomXPath::query 来定位您的 DOM 的特定元素(类似于 CSS)。获得与查询匹配的所有节点后,只需在它们上调用textContent。或者,您可以自己进行解析以查找后跟/未后跟等的节点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-19
  • 2023-03-30
  • 1970-01-01
相关资源
最近更新 更多