検索
ホームページバックエンド開発XML/RSS チュートリアルXML名前空間(XML Namespaces)の詳しい説明とノード読み取り方法のサンプルコード

XML 名前空間 は、要素の名前の競合を回避する方法を提供します。

名前の競合

XML では、要素名は開発者によって定義されます。2 つの異なるドキュメントが同じ要素名を使用すると、名前の競合が発生します。

この XML ドキュメントはテーブル内の情報を伝えます:

   <tr>
   <td>Apples</td>
   <td>Bananas</td>
   </tr>

この XML ドキュメントはテーブル (家具) に関する情報を伝えます:

   <name>African Coffee Table</name>
   <width>80</width>
   <length>120</length>

これら 2 つの XML ドキュメントが一緒に使用される場合、両方のドキュメントに含まれるため、< の場合に名前の競合が発生します。 ;table> 要素には異なる内容と定義があります。

XML パーサーは、そのような競合を処理する方法を決定できません。

名前の競合を避けるために接頭辞を使用してください

このドキュメントはテーブル内の情報を伝えます:

   <h:tr>
   <h:td>Apples</h:td>
   <h:td>Bananas</h:td>
   </h:tr>

この XML ドキュメントは家具に関する情報を伝えます:

   <f:name>African Coffee Table</f:name>
   <f:width>80</f:width>
   <f:length>120</f:length>

現在、名前の競合は存在しません。これは両方のドキュメントが原因です。

要素 (
) に異なる名前を使用します。

接頭辞を使用して、2 つの異なるタイプの

要素を作成します。

名前空間の使用

この XML ドキュメントは、テーブル内の情報を伝えます:


   <h:tr>
   <h:td>Apples</h:td>
   <h:td>Bananas</h:td>
   </h:tr>

この XML ドキュメントは、家具に関する情報を伝えます:

<table>
   <name>African Coffee Table</name>
   <width>80</width>
   <length>120</length>
</table>

接頭辞を使用する代わりに、 を追加します。属性。名前空間に関連付けられた修飾名をプレフィックスに与えます。

XML 名前空間 (xmlns) 属性

XML 名前空間属性は要素の開始タグに配置され、次の構文を使用します:

xmlns:namespace-prefix="namespaceURI"

名前空間が要素の開始タグで定義されている場合、すべての属性は同じですプレフィックスの子要素はすべて同じ名前空間に関連付けられます。

注: 名前空間の識別に使用されるアドレスは、パーサーが情報を検索するために使用されることはありません。その唯一の目的は、名前空間に一意の名前を付けることです。ただし、多くの企業は、名前空間に関する情報を含む実際の既存の Web ページへのポインターとして名前空間を使用することがよくあります。

Uniform Resource Identifier (URI)

Uniform Resource Identifier は、インターネット リソースを識別できる文字列です。最も一般的に使用される URI は、インターネット ドメイン アドレスを識別するために使用される Uniform Resource Locator (URL) です。あまり一般的には使用されないもう 1 つの URI は、Uniform Resource Naming (URN) です。この例では、URL のみを使用します。

デフォルトの名前空間

要素のデフォルトの名前空間を定義すると、すべての子要素で接頭辞を使用する手間が省けます。

次の構文を使用してください:

xmlns="namespaceURI"

この XML ドキュメントは、テーブル内の情報を伝えます:

<tr> <td>Apples</td> <td>Bananas</td> </tr>

この XML ドキュメントは、家具に関する情報を伝えます:


   <name>African Coffee Table</name>
   <width>80</width>
   <length>120</length>
(转原文http://www.cnblogs.com/mgen/archive/2011/05/24/2056025.html)

ご存知のとおり、XmlDocument は XPath クエリを実行できます。 ただし、実際には、ここで説明する XPath クエリは、名前空間のない XML (xmlns 属性なし) に限定されます。名前空間のある XML が検出されると、対応する XPath クエリは結果を返しません。

たとえば、次の XML

<a xmlns="mgen.cnblogs.com">
    <b>ccc</b>
</a>

XPath クエリ /a/b は null を返し、xmlns がない場合はノード b が返されます。

If the XPath expression does not include a prefix, it is assumed that the namespace URI is the empty namespace. 
If your XML includes a default namespace, you must still add a prefix and namespace URI to the XmlNamespaceManager; 
otherwise, you will not get any nodes selected

は、XPathexpression にプレフィックスが付いていない場合 (たとえば、a:b のプレフィックスが a である場合)、クエリされたノードの名前空間 URI (属性がノードである場合もあることに注意してください) が空である必要があることを意味します(デフォルト値も)、そうでない場合、XPath は結果を返しません。

上記の XML では、ノード a と b に名前空間値があるため、当然ながら XPath クエリには結果がありません。

(上記の英語では、ノードにデフォルトの名前空間がある場合、プレフィックスと名前空間の値を XmlNamespaceManager に手動で追加する必要があるとも述べています。これについては後で説明します)

解決策を検討する前に、まず次のことを行う必要があります。もちろん、XML 名前空間の値を識別するのは非常に簡単です。次の XML を参照してください (この XML は次の手順でも使用されます)

<?xmlversion="1.0" encoding="utf-8"?>
<rootxmlns="dotnet" xmlns:w="wpf">
  <a>data in a</a>                
  <w:b>data in b</w:b>         
  <cxmlns="silverlight">
    <w:d>                             
      <e>data in e</e>              
    </w:d>
  </c>
</root>

そのすべての XML ノードの名前空間は次のとおりです。次のように:

<?xmlversion="1.0" encoding="utf-8"?>
<rootxmlns="dotnet" xmlns:w="wpf">
  <!-- xmlns: dotnet -->
  <a>data in a</a>
  <!-- xmlns: dotnet -->
  <w:b>data in b</w:b>
  <!-- xmlns: wpf -->
  <cxmlns="silverlight">
    <!-- xmlns: silverlight -->
    <w:d>
      <!-- xmlns: wpf -->
      <e>data in e</e>
      <!-- xmlns: silverlight -->
    </w:d>
  </c>
</root>

識別された場合 XML 名前空間には問題がないため、その後の操作は非常に簡単です: XPath を使用して XmlDocument 内のノードをクエリする場合、その名前空間が存在する限り。 value が null ではない場合は、接頭辞を付ける必要があります。この接頭辞を使用して、このノードの名前空間値を表します。これらのプレフィックスは、XmlNamespaceManager クラスを通じて追加されます。使用する場合は、XmlNamespaceManager を SelectNodes または SelectSingleNode に渡すだけです。これが、上記で「ノードにデフォルトの名前空間がある場合、プレフィックスと名前空間の値を XmlNamespaceManager に手動で追加する必要がある」と言われている理由です。

另外构造一个XmlNamespaceManager需要XmlNameTable对象,这个对象可以从XmlDocument.NameTable和XmlReader.NameTable属性中得到。

下面我们步入代码,比如说查询上面XML中的节点e,分析位置节点e位于:root->c->d->e,然后将所需命名空间值加入到 XmlNamespaceManager中(前缀名称无所谓,只要在XPath一致即可),查询即可成功,如下代码:

   /*
              * 假设上面XML文件在C:\a.txt中
              * 下面代码会查询目标节点e,并输出数据:data in e
              * */
 
            var xmlDoc =newXmlDocument();
            xmlDoc.Load(@"C:\a.txt");
 
            //加入命名空间和前缀
            var xmlnsm =newXmlNamespaceManager(xmlDoc.NameTable);
            xmlnsm.AddNamespace("d", "dotnet");
            xmlnsm.AddNamespace("s", "silverlight");
            xmlnsm.AddNamespace("w", "wpf");
 
            var node = xmlDoc.SelectSingleNode("/d:root/s:c/w:d/s:e", xmlnsm);
            Console.WriteLine(node.InnerText);
 
            //输出:data in e


以上がXML名前空間(XML Namespaces)の詳しい説明とノード読み取り方法のサンプルコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
RSSドキュメント形式:RSS 2.0以降の探索RSSドキュメント形式:RSS 2.0以降の探索Apr 26, 2025 am 12:22 AM

RSS2.0は、コンテンツパブリッシャーが構造化された方法でコンテンツを配布できるようにするオープン標準です。タイトル、リンク、説明、リリース日などの豊富なメタデータが含まれているため、サブスクライバーは迅速にコンテンツを参照してアクセスできます。 RSS2.0の利点は、そのシンプルさとスケーラビリティです。たとえば、カスタム要素を許可します。つまり、開発者は著者、カテゴリなどのニーズに基づいて追加情報を追加できます。

RSSの理解:XMLの視点RSSの理解:XMLの視点Apr 25, 2025 am 12:14 AM

RSSは、頻繁に更新されるコンテンツを公開するために使用されるXMLベースの形式です。 1。RSSFeedは、タイトル、リンク、説明などを含むXML構造を通じて情報を整理します。2。rssfeedの作成には、言語やリリース日などのメタデータを追加するXML構造での書き込みが必要です。 3.高度な使用法には、マルチメディアファイルと分類された情報を含めることができます。 4.デバッグ中にXML検証ツールを使用して、必要な要素が存在し、正しくエンコードされていることを確認します。 5. RSSFeedの最適化は、構造をシンプルに保つことで、ページング、キャッシュ、および保持することで実現できます。この知識を理解して適用することにより、コンテンツを効果的に管理および配布できます。

XMLのRSS:タグ、属性、および構造のデコードXMLのRSS:タグ、属性、および構造のデコードApr 24, 2025 am 12:09 AM

RSSは、コンテンツを公開および購読するために使用されるXMLベースの形式です。 RSSファイルのXML構造には、ルート要素、要素、および複数の要素が含まれ、それぞれがコンテンツエントリを表します。 XMLパーサーを介してRSSファイルを読み取り、解析すると、ユーザーは最新のコンテンツを購読して取得できます。

RSSにおけるXMLの利点:技術的なディープダイビングRSSにおけるXMLの利点:技術的なディープダイビングApr 23, 2025 am 12:02 AM

XMLには、RSSの構造化データ、スケーラビリティ、クロスプラットフォームの互換性、解析検証の利点があります。 1)構造化されたデータにより、コンテンツの一貫性と信頼性が保証されます。 2)スケーラビリティにより、コンテンツのニーズに合わせてカスタムタグを追加できます。 3)クロスプラットフォームの互換性により、さまざまなデバイスでシームレスに動作します。 4)分析および検証ツールは、フィードの品質と完全性を確保します。

XMLのRSS:コンテンツシンジケーションのコアを発表しますXMLのRSS:コンテンツシンジケーションのコアを発表しますApr 22, 2025 am 12:08 AM

XMLでのRSSの実装は、構造化されたXML形式を使用してコンテンツを整理することです。 1)RSSは、チャネル情報やプロジェクトリストなどの要素を含むデータ交換形式としてXMLを使用します。 2)RSSファイルを生成する場合、コンテンツは仕様に従って整理し、サブスクリプションのためにサーバーに公開する必要があります。 3)RSSファイルは、読者またはプラグインを介してサブスクライブして、コンテンツを自動的に更新できます。

基本を超えて:高度なRSSドキュメント機能基本を超えて:高度なRSSドキュメント機能Apr 21, 2025 am 12:03 AM

RSSの高度な機能には、コンテンツネームスペース、拡張モジュール、条件付きサブスクリプションが含まれます。 1)コンテンツネームスペースはRSS機能を拡張します。2)dublincoreやiTunesなどの拡張モジュールを拡張してメタデータを追加します。これらの関数は、情報収集の効率を改善するためにXML要素と属性を追加することにより実装されます。

XMLバックボーン:RSSフィードが構造化される方法XMLバックボーン:RSSフィードが構造化される方法Apr 20, 2025 am 12:02 AM

rssfeedsusexmltoStructurecontentupdates.1)xmlprovidesahierararchStructurefordata.2)theelementDefinesthefeed'sidentityandContainesements.3)letentionEntentividualContentPieces.4)

RSS&XML:Webコンテンツのダイナミックデュオを理解するRSS&XML:Webコンテンツのダイナミックデュオを理解するApr 19, 2025 am 12:03 AM

RSSとXMLは、Webコンテンツ管理のためのツールです。 RSSはコンテンツの公開と購読に使用され、XMLはデータの保存と転送に使用されます。コンテンツの公開、サブスクリプション、および更新プッシュで動作します。使用法の例には、RSS公開ブログ投稿やXML保存本情報が含まれます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。