XML ファイルを解析するときに初心者が遭遇する可能性のある最も一般的な問題は、おそらく XML 名前空間です。この記事は、名前空間について簡単に説明することを目的としています。
名前空間の意味は言うまでもありませんが、C++、
C#、その他の高級言語と同様に、XML も多数のファイルをまとめると変数名が同じになってしまうという問題に直面するため、名前空間を使用する必要があります。同じ名前で異なる意味を持つ変数を分離します。この記事では、名前空間の解析方法に焦点を当てます。
以下は単純な XML ファイルです:
<root>
<child id = ‘0’>
hello world
</child>
<child id='1'>
one
</child>
</root>
ログイン後にコピー
この例には名前空間がありません。XML を初めて学ぶときに遭遇する例は次のようなものではないでしょうか。この例は誤解を招きます。初心者は hello world を解析した後、実際の XML ファイルを解析するために喜んで同じプログラムを使用しますが、多くの場合失敗します。以下は、Douban
API
<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:db="http://www.douban.com/xmlns/"
xmlns:gd="http://schemas.google.com/g/2005" xmlns:opensearch="http://a9.com/-/spec/opensearchrss/1.0/">
<id>http://api.douban.com/event/10069638</id>
<title>Debugging the Web </title>
<category scheme="http://www.douban.com/2007#kind" term="http://www.douban.com/2007#event.salon"/>
<author>
<link href="http://api.douban.com/people/1057620" rel="self"/>
<link href="http://www.douban.com/people/aka/" rel="alternate"/>
<link href="http://t.douban.com/icon/u1057620-16.jpg" rel="icon"/>
name>胖胖的大头鱼</name>
<uri>http://api.douban.com/people/1057620</uri>
</author>
<db:attribute name="invite_only">no</db:attribute>
ログイン後にコピー
から返された XML ファイルです。www がたくさんあるので読みたくないので、読み飛ばしてしまいます。すると、見慣れた
が表示されます。上記の例のプログラムを思い切って適用してみます。実行しても何も表示されません。何が問題なのでしょうか? C# は、XDocument などの XML クラスを多数提供します。子供靴、落ち着いて一行ずつ見てみましょう。 この行は面白くないので、ここを見てくださいno を組み合わせると理解できます。はい、db は名前空間の略語であり、要素の名前の前に記述するのに便利です。そのため、 は 、 とは異なります。この略語はドキュメント内の変数を区別できますが、依然として多数のドキュメントには適していないため、名前空間には完全な名前もあります (ここでは http://www.douban.com/xmlns/)。実際、XML Parser では、どんな内容でも string
として扱うことができます。ただし、名前を考えるのが面倒です。第 2 に、これは広告として使用できます。はこの URL を使用します。解析する際、Parser は完全名に基づいて変数を区別するため、両方のドキュメントに が存在する場合でも、完全名が異なっていれば問題はありません。 こうやってみるとわかりやすいですが、http://www.w3.org/2005/Atom には略語すらありません。彼の略称は空の文字列であると気づいたのは正しいことです。これはデフォルトの名前空間と呼ばれ、プレフィックスのないように見えるものはこの名前空間の下にあります。したがって、 は裸ではなく、実際には <"http://www.w3.org/2005/Atom"> なので、当然、裸のプログラムはそれを解析できません。
それでは、どうやって分析するのでしょうか?以下にサンプルプログラムを示しますので、皆様のお役に立てれば幸いです。このコードはWP7で動作します。 XmlDocument のバージョンもありますが、WP7 にはこのクラスがありません。残念です。 。 。 りー以上がXML 解析における名前空間についての予備的な理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。