菜鸟教程小白 发表于 2022-12-12 18:49:09

ios - 使用 GDataXML 获取 XML 响应值


                                            <p><p>在 HTTP Post 之后,我检索到一个 xml 响应,如下所示:</p>

<pre><code>&lt;result value=&#34;OK&#34;&gt;
    &lt;user id=&#34;1&#34;&gt;
            &lt;name&gt;admin&lt;/name&gt;
            &lt;rank&gt;0&lt;/rank&gt;
            &lt;picture_count&gt;0&lt;/picture_count&gt;
            &lt;comment_count&gt;0&lt;/comment_count&gt;
            &lt;has_profile&gt;1&lt;/has_profile&gt;
    &lt;/user&gt;
&lt;/result&gt;
</code></pre>

<p>我想提取用户 ID,但我不知道该怎么做。
我尝试使用 <code>GDataXML</code> Parser,因为它已经集成在我的项目中,但是
我不知道如何在 html 标签中获取值。</p>

<p>我希望你能帮助我。如果 <code>XMLParser</code> 没有解决方案,你会推荐正则表达式吗?在这种情况下,我会很感激正则表达式的解决方案,我不太擅长这个:)</p>

<p>提前致谢。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>这是我用来检索用户属性的代码。它有效。</p>

<pre><code>NSString* path = [ pathForResource:@&#34;test&#34; ofType:@&#34;xml&#34;];

NSData *xmlData = [ initWithContentsOfFile:path];
NSError *error;
GDataXMLDocument *doc = [ initWithData:xmlData
                                                         options:0 error:&amp;error];

NSArray *userElements = ;

for (GDataXMLElement *userEl in userElements) {

    // Attribute
    NSString *attribute = [(GDataXMLElement *) stringValue];      
    NSLog(@&#34;attribute for user is %@&#34;, attribute);

    // Name
    NSArray *names = ;
    if (names.count &gt; 0) {
      GDataXMLElement *name = (GDataXMLElement *) ;

      NSLog(@&#34;name for user is %@&#34;, name.stringValue);
    }

    // Rank
    NSArray *ranks = ;
    if (ranks.count &gt; 0) {
      GDataXMLElement *rank = (GDataXMLElement *) ;

      NSLog(@&#34;rank for user is %@&#34;, rank.stringValue);
    }

    // Do the same for other tags...   
}

;
;
</code></pre>

<p>文件 test.xml 与您从 xml 响应中检索到的文件相同。所以你需要改变这段代码的第二行。也许你可以调用 <code>NSData</code> 类的 <code>initWithData</code> 方法。</p>

<p>您可以将此代码放在您想要的位置。也许您可以创建另一个作为集中式解析器的类。希望对你有帮助</p>

<p><strong>编辑</strong></p>

<p>将这两行放在前面作为说明。</p>

<pre><code>NSString *valAttribute = [(GDataXMLElement *) stringValue];      
NSLog(@&#34;value attribute for result is %@&#34;, valAttribute);
</code></pre>

<p>解释很简单。使用 <code>doc.rootElement</code> 您可以检索整个 xml 文档,从 <code><result></code> 到 <code></result></code></p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用 GDataXML 获取 XML 响应值,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/8741698/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/8741698/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用 GDataXML 获取 XML 响应值