【问题标题】:MATLAB: accessing XML objectMATLAB:访问 XML 对象
【发布时间】:2011-11-15 00:57:43
【问题描述】:

在 MATLAB 中,我加载了一个 XML 文件 docNode = xmlread('stuff.xml');stuff.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>

我正在尝试在&lt;link&gt; 中检索该字符串,但事实证明这非常棘手。我正在阅读此博客http://blogs.mathworks.com/desktop/2010/11/01/xml-and-matlab-navigating-a-tree/,但我仍然无法弄清楚!有人可以谈谈如何访问&lt;link&gt; 吗?蒂亚!

【问题讨论】:

    标签: xml matlab


    【解决方案1】:

    这能满足你的需要吗?

    >> 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 你在stuff.xml 中有一个错误——它应该是&lt;/channel&gt;,而不是&lt;/&lt;channel&gt;


    编辑:要直接循环每个链接,可以使用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
    

    【讨论】:

    • 嘿山姆,是的。太感谢了!如果有多个&lt;item&gt;,你如何循环遍历它们?
    • 放弃这个问题。发布后不久我就想通了。不过,我想知道为什么你会首先获得 link 元素而不是串行访问它。但一切正常。
    猜你喜欢
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 2021-11-23
    • 2019-04-23
    • 1970-01-01
    相关资源
    最近更新 更多