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/ "。