2011-11-15 4 views
3

MATLABでは、XMLファイルdocNode = xmlread('stuff.xml');を読み込みます。 stuff.xmlは次のとおりです。MATLAB:XMLオブジェクトにアクセス

<?xml version="1.0"?> 
<rss version="2.0" xmlns:g="http://somesite.com"> 
    <channel> 
     <title>Blah</title> 
     <link>http://www.blah.com</link> 
     <description>BLAH.COM </description> 
     <item>  
      <link>http://www.blah.com/page</link> 
     </item> 
    </channel> 
</rss> 

私は<link>にその文字列を取得しようとしているが、かなりトリッキーであることが証明されて..私はこのブログhttp://blogs.mathworks.com/desktop/2010/11/01/xml-and-matlab-navigating-a-tree/を読んでいるが、私はまだそれを把握することはできません!誰かが<link>にアクセスするにはどうすればいいですか? TIA!

答えて

3

これで必要なのはありますか?あなたはstuff.xmlでエラーが発生している

>> docNode = xmlread('stuff.xml'); 
>> l = docNode.getElementsByTagName('link'); 
>> char(l.item(0).getFirstChild.getData) 
ans = 
http://www.blah.com 
>> char(l.item(1).getFirstChild.getData) 
ans = 
http://www.blah.com/page 

PS - それは</channel>、ない</<channel>でなければなりません。


編集:直接リンクを介してループするには、l.getLengthを使用することができます。

for i = 0:(l.getLength - 1) % 0-based indexing, not 1-based like MATLAB arrays 
    char(l.item(i).getFirstChild.getData) 
end 

ans = 
http://www.blah.com 
ans = 
http://www.blah.com/page 
+0

サムねえ、はい、それはありません。どうもありがとうございます!複数の ''がある場合、それらをどのようにループしますか? – musicliftsme

+0

質問を破棄します。私はそれをポストした直後にそれを理解した。私はなぜあなたがシリアルにアクセスするのではなく、 'link'要素を最初に取得するのだろうと思っています。しかし、すべての作品。 – musicliftsme

関連する問題