PHP / XML - 检查节点是否已设置

时间:2017-11-13 15:57:11

标签: php xml

我有一个XML文档,结构如下:

<produkter>
    <produkt>
        <forhandler></forhandler>
        <produktnavn></produktnavn>
        and so on...
    </produkt>
</produkter>

我正在提取这样的数据:

$produktnavn = utf8_decode($xmlObject->item($i)->getElementsByTagName('produktnavn')->item(0)->childNodes->item(0)->nodeValue);

现在我正在检查XML文档中是否存在该节点。

例如......如果实际上有一个名为&#34; produktnavn&#34;的节点,我只想进行上述操作。

我正在尝试:

if (isset($xmlObject->item($i)->forhandler)) {

但这似乎不起作用。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

您可以将DOMDocumentDOMXPath一起使用,并检查xpath表达式的长度。

例如:

struct Job {

  let activityID : String
  ...

  init(dict: [String:String]) {
      activityID = dict["ActivityID"] ?? ""
      ... 
  }

}

答案 1 :(得分:0)

getElementsByTagName的结果始终为DOMNodeList;该类有一个成员length,描述为:

  

列表中的节点数。有效子节点索引的范围是0到length - 包括1。

因此,要检查列表中是否至少有一个项目,请检查length是否为> 0

$produktnavn_nodes = $xmlObject->item($i)->getElementsByTagName('produktnavn');
if ( $produktnavn_nodes->length > 0 ) {
    $produktnavn = utf8_decode($produktnavn_nodes->item(0)->childNodes->item(0)->nodeValue);
    // ... do something with $produktnavn
}