ホームページ >バックエンド開発 >PHPチュートリアル >SimpleXML でハイフンでつながれたノード名にアクセスするにはどうすればよいですか?

SimpleXML でハイフンでつながれたノード名にアクセスするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-13 13:37:10444ブラウズ

How to Access Hyphenated Node Names in SimpleXML?

ハイフン付きの名前を持つ SimpleXML 読み取りノード

XML では、可読性を向上させるためにノード名にハイフンを使用できます。ただし、これらのハイフンで区切られた名前は、SimpleXML を使用して XML ドキュメントを解析するときに問題を引き起こす可能性があります。

問題

SimpleXML を使用してハイフンで区切られた名前を持つノードにアクセスしようとすると、ユーザーはエラーや間違った結果に遭遇する可能性があります。たとえば、次の XML の場合:

<gnm:Workbook xmlns:gnm="http://www.gnumeric.org/v10.dtd" ...>
  <office:document-meta ...>
    ...
  </office:document-meta>
</gnm:Workbook>

標準構文を使用して「document-meta」ノードにアクセスしようとすると、

$docMeta = $officeXML->document-meta;

エラーが発生するか、不正な整数が返されます。 value.

解決策

SimpleXML でハイフンでつながれた名前を持つノードに正しくアクセスするには、ノード名を中括弧で囲みます:

$docMeta = $officeXML->{'document-meta'};

この構文は、ハイフンでつながれた名前を文字列として扱い、その名前によってノードを検索するように SimpleXML に指示します。特定の名前。

属性アクセス

この中括弧構文は要素ノードにアクセスする場合にのみ必要であることに注意してください。ハイフンでつながれた名前を持つ属性には、標準の配列表記を使用してアクセスできます。

$attribute = $node['hyphenated-attribute'];

代替メソッド

中かっこ構文が好まれない場合は、代替メソッドを使用します。次の表記:

$docMeta = $officeXML->{'office:document-meta'};

この明示的な名前空間宣言により、 SimpleXML は、指定された名前空間内のノードを検索します。

結論

中かっこまたは明示的な名前空間宣言を使用すると、ユーザーは XML ドキュメント内のハイフンでつながれた名前を持つノードを正常に読み取ることができます。 SimpleXML を使用します。

以上がSimpleXML でハイフンでつながれたノード名にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。