ホームページ  >  記事  >  バックエンド開発  >  XML 解析における名前空間についての予備的な理解

XML 解析における名前空間についての予備的な理解

黄舟
黄舟オリジナル
2017-03-17 17:32:531847ブラウズ

XML ファイルを解析するときに初心者が遭遇する可能性のある最も一般的な問題は、おそらく XML 名前空間です。この記事は、名前空間について簡単に説明することを目的としています。

名前空間の意味は言うまでもありませんが、C++、

C#、その他の高級言語と同様に、XML も多数のファイルをまとめると変数名が同じになってしまうという問題に直面するため、名前空間を使用する必要があります。同じ名前で異なる意味を持つ変数を分離します。この記事では、名前空間の解析方法に焦点を当てます。

以下は単純な XML ファイルです:

<root>
   <child id = ‘0’> 
      hello world 
   </child>
   <child id=&#39;1&#39;>
     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 がたくさんあるので読みたくないので、読み飛ばしてしまいます。すると、見慣れた ec296a309ecbf9f2e0d91a06464b4708 が表示されます。上記の例のプログラムを思い切って適用してみます。実行しても何も表示されません。何が問題なのでしょうか? C# は、XDocument などの XML クラスを多数提供します。子供靴、落ち着いて一行ずつ見てみましょう。

cc2a3c708791b3c626d2b5fe40691168この行は面白くないので、ここを見てください1776633c7a13f5118b7651372dd8ba2dnoea6f540cddccdca7d953c18eb1eb3288 を組み合わせると理解できます。はい、db は名前空間の略語であり、要素の名前の前に記述するのに便利です。そのため、5a37d16f53356ad61c30ba4c13522081 は e8aa4f7ce323535a9b01247c46fe6139、02d8a117819869c76bcd3e50c8e21798 とは異なります。この略語はドキュメント内の変数を区別できますが、依然として多数のドキュメントには適していないため、名前空間には完全な名前もあります (ここでは http://www.douban.com/xmlns/)。実際、XML Parser では、どんな内容でも string

として扱うことができます。ただし、名前を考えるのが面倒です。第 2 に、これは広告として使用できます。はこの URL を使用します。解析する際、Parser は完全名に基づいて変数を区別するため、両方のドキュメントに 5a37d16f53356ad61c30ba4c13522081 が存在する場合でも、完全名が異なっていれば問題はありません。

こうやってみるとわかりやすいですが、http://www.w3.org/2005/Atom には略語すらありません。彼の略称は空の文字列であると気づいたのは正しいことです。これはデフォルトの名前空間と呼ばれ、プレフィックスのないように見えるものはこの名前空間の下にあります。したがって、48fe722b397613e801e59f453d6c9330 は裸ではなく、実際には 438b62eb2caf20f68d635cef1e8e3e39 なので、当然、裸のプログラムはそれを解析できません。

それでは、どうやって分析するのでしょうか?以下にサンプルプログラムを示しますので、皆様のお役に立てれば幸いです。このコードはWP7で動作します。 XmlDocument のバージョンもありますが、WP7 にはこのクラスがありません。残念です。 。 。

りー

以上がXML 解析における名前空間についての予備的な理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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