ホームページ  >  記事  >  バックエンド開発  >  XMLを解析するときに空の配列を取得するにはどうすればよいですか?

XMLを解析するときに空の配列を取得するにはどうすればよいですか?

WBOY
WBOY転載
2024-02-10 08:00:101032ブラウズ

XMLを解析するときに空の配列を取得するにはどうすればよいですか?

php エディタ Baicao は、XML を解析するときに空の配列を取得するメソッドを提供します。 XML データを処理するときに、ノードが空になる状況が発生することがありますが、このときは、ノードを表す空の配列を取得する必要があります。 PHP では、xpath 式を使用するか、SimpleXMLElement オブジェクトの Children() メソッドを使用して、空の配列を取得できます。 xpath 式を使用してノード名の後に「[]」を追加すると空の配列を取得できます。また、children() メソッドを使用して空の文字列をパラメーターとして渡すことで空の配列を取得できます。これらのメソッドは、XML を解析するときに空の配列の値を正確に取得するのに役立ちます。

質問の内容

私は、xml ファイルを受け入れ、解析し、json として返す go ユーティリティを作成するという任務を与えられました。

以下は XML の例です:

リーリー

次のコードを書きました:

リーリー

go.dev

しかし、残念ながら、それは機能しません。コンソールに次のメッセージが表示されます:

リーリー

私は何を間違えたのでしょうか?この問題はどうすれば解決できますか?

解決策

ほぼ答えに近づいていると思うので、議論を答えに移した方がよいと思います。前述したように、xml.unmarshal によって返されるエラーを確認する必要があります。次のようになります:

リーリー

コードに有効な XML データが含まれているので、意味のあるエラーを生成できます。上記のエラー チェックを完了した後、コードを実行すると次の結果が生成されます:

リーリー

これは、データ構造に小さなタイプミスがあるために発生します。track 構造の定義には次の内容があります:

リーリー

実際には track であるべきときに、xmlname 属性を tracks と誤ってタグ付けしました:

リーリー

最後に、これは質問とは直接関係ありませんが、変数に error という名前を付けることは避けてください。これは、誤った組み込みデータ型の名前であるためです。 json.marshal への呼び出しを次のように変更します。

リーリー

エラーに対して panic() を使用する必要はありません。これは、コードを削除するための便利な方法に過ぎません。

これらの変更を行った後、コードをコンパイルして実行すると、出力 (jq 形式) が得られます。 リーリー

構造内に

xmlname 要素さえ必要ないことに注意してください。要素を完全に削除すると、次のようになります。 リーリー 次に、出力 (

jq

形式) を取得します。 リーリー

以上がXMLを解析するときに空の配列を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。