名前空間を持つC#XDocument解析するXML形式のファイル

1  <?XMLバージョン= "1.0"エンコード= "UTF-8" ?> 
2  < エントリーの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/" > 
3    < ID >のhttp ://api.douban.com/event/10069638 </ ID > 
4    < タイトル>のWebデバッグ</ タイトル> 
5    <= "http://www.douban.com/2007#event.salon" /> 
6    < 著者> 
7      < リンクのhref = "http://api.douban.com/people/1057620" REL = "自己" / > 
8      < リンクのhref = "http://www.douban.com/people/aka/" REL = "代替" /> 
9      < リンクのhref = "http://t.douban.com/icon/u1057620-16 .JPG」REL = "アイコン" /> 
10  
11      <名前>王胖子</ 名前> 
12      <URI > http://api.douban.com/people/1057620</ URI > 
13  </ 著者> 
14 </ entry>の

 

<DB:属性名= "invite_only">なし</ DB:属性>

 WWWが非常に多くのスキップを見たい、そしておなじみの<著者> </著者>参照、決定的に手続き上の例を適用し、その結果、最終的には、問題の嘘を実行を取得していない?ありませんか C#のXMLの提供クラスの多くは、XDocument、XReader、XPathの、XmlDocumentオブジェクト 、 ?私はああを強制しないように、このクラスを使用していますものではありません
。ここで、<エントリーのxmlns = "下に(1)を参照してください。http://www.w3.org/ 2005 /アトム」  、つまりXML名前空間のxmlnsです。
(2)後で見る、のxmlns:DB = " http://www.douban.com/xmlns/"  、バインディング<DB:属性名= "invite_only ">なし</ DB:属性> この文缶私は、理解し
、<:属性DB>と<属性>、<GD属性DBはそう、要素の名前の前に簡単に書くための名前空間と呼ばれている > と同じではありません。
(3)これは、差変数文書と呼ぶことができるが、ドキュメントかの多数ので、名前空間、ならびに完全な名前は、ここでhttp://www.douban.com/xmlns/実際には、両方の文字列として扱わ用XMLパーサのために何をするかの完全な名前を書きますが、名前があまりにも多くの問題を考えるために、そして第二に、我々は、一般的にURLを使用するので、広告もする機会を取ります。

http://www.w3.org/2005/Atomは終わりにしても、ああGeshaある名前空間のxmlns xmlファイル(内予備名前空間のXML解析)を解析する短いなし?
ねえ、右側にこのことを認識し、彼は空の文字列、「」と呼ばれています。これは、デフォルトの名前空間、接頭辞なしの名前空間のすべてを見ていると呼ばれるものです。だから、<作者>むき出しされていない、ああ、人々実際にあること<「http://www.w3.org/2005/Atom」:著者>ので、裸のプログラムがコースを解析することはできません。

 それでは、どのようにそれを解決するには?ここではサンプルプログラムがあり、我々は手助けをしたいです。このコードは、WP7上で実行することができます。

 

1  文字列のファイル= @ " C:\ Users \ユーザーV-menlin \ドキュメント\ Visual Studioの2010 \プロジェクト\テスト\テスト\のtest.xml " ;
 2              XDocumentのDOC = XDocument.Load(ファイル);
 3              // 使用次のコードに文字列解析 
 4。             // XDocument XDocument.ParseのDOC =(文字列);
 5。 
6。             // すべてのXMLファイルのためには、同様のDBを追加しなかった:この要素を、以下の方法により
7。              XNamespace D = "@ HTTP:// WWW .w3.org / 2005 /アトム" ;
 8              のforeach(XElementの要素 doc.Descendants(D + " タイトル" ))
9              {
 10                  Console.WriteLineを(element.Value);
 11              }
 12は             // <著者>以下の<link>を含む、以下の実施例はまた、属性を読み取る方法を示しています。
13は、             foreachの(XElementの要素 doc.Descendants(D + " 著者" ))
 14              {
 15                  のforeach(のXElementのinelement  element.Descendants(D + " リンク" ))
 16                  {
 17                      Console.WriteLineを(inelement.Attribute(" HREF " ).Valueの);
18は、                      Console.WriteLineを(inelement.Attribute(" REL " ).Valueの);
 19                  }
 20              }
 21である 
22れる             Console.WriteLineを();
 23である             // 結腸プレフィックス追加要素について、次のコードを使用して
24              XNamespace DB = @ " HTTPを://www.douban.com/xmlns/ " ;
 25              のforeach(XElementの要素 doc.Descendants(DB + " 属性" ))
 26である             {
 27                  (Console.WriteLineを(element.Attribute "名前" ).Valueの);
 28                  Console.WriteLineを(element.Value);
 29              }
 30              // 。一瞬だけネームスペースヘッドで
 31は 
32              // 次の使用のために直接いくつかの他の一般的なヘッドです。
33は、              XNamespace =たGd @ " http://schemas.google.com/g/2005 " ;
 34は、              XNamespaceのOpenSearch = @ " http://a9.com/-/spec/opensearchrss/1.0/ "

 

おすすめ

転載: www.cnblogs.com/baylor2019/p/12616622.html