菜鸟教程小白 发表于 2022-12-12 14:58:51

ios - 如何访问大子元素?


                                            <p><p>我正在尝试学习 XMLMapper,所以我想使用我的 W3 Schools XML 示例来尝试自己映射它们。</p>

<p>所以我正在尝试从一系列书籍中打印标题、作者。</p>

<p>书籍.XML</p>

<pre><code>&lt;?xml version=&#34;1.0&#34; encoding=&#34;utf-8&#34;?&gt;
&lt;bookstore&gt;
    &lt;book&gt;
      &lt;title&gt;Everyday Italian&lt;/title&gt;
      &lt;author&gt;Giada De Laurentiis&lt;/author&gt;
      &lt;year&gt;2005&lt;/year&gt;
      &lt;price&gt;30.00&lt;/price&gt;
    &lt;/book&gt;
    &lt;book&gt;
      &lt;title&gt;Harry Potter&lt;/title&gt;
      &lt;author&gt;J K. Rowling&lt;/author&gt;
      &lt;year&gt;2005&lt;/year&gt;
      &lt;price&gt;29.99&lt;/price&gt;
    &lt;/book&gt;
    &lt;book&gt;
      &lt;title&gt;XQuery Kick Start&lt;/title&gt;
      &lt;author&gt;James McGovern&lt;/author&gt;
      &lt;author&gt;Per Bothner&lt;/author&gt;
      &lt;author&gt;Kurt Cagle&lt;/author&gt;
      &lt;author&gt;James Linn&lt;/author&gt;
      &lt;author&gt;Vaidyanathan Nagarajan&lt;/author&gt;
      &lt;year&gt;2003&lt;/year&gt;
      &lt;price&gt;49.99&lt;/price&gt;
    &lt;/book&gt;
    &lt;book&gt;
      &lt;title&gt;Learning XML&lt;/title&gt;
      &lt;author&gt;Erik T. Ray&lt;/author&gt;
      &lt;year&gt;2003&lt;/year&gt;
      &lt;price&gt;39.95&lt;/price&gt;
    &lt;/book&gt;
&lt;/bookstore&gt;
</code></pre>

<p>BooksXMLMappable.swift 文件:</p>

<pre><code>import Foundation
import XMLMapper

class BookStore: XMLMappable {
    required init?(map: XMLMap) {
      //Empty
    }

    var nodeName: String!

    var books: ?

    func mapping(map: XMLMap) {
      books &lt;- map[&#34;book&#34;]

    }

}

class Book: XMLMappable {
    required init?(map: XMLMap) {
      //Empty
    }

    var nodeName: String!

    var title: String!
    var author: String?
    var year: Int?
    var price: Double?


    func mapping(map: XMLMap) {
      //category &lt;- map.attributes[&#34;category&#34;]
      title &lt;- map[&#34;title&#34;]
      author &lt;- map[&#34;author&#34;]
      year &lt;- map[&#34;year&#34;]
      price &lt;- map[&#34;price&#34;]
    }

}
</code></pre>

<p>现在我尝试在我的 ViewController 的 ViewDidLoad 中运行它:</p>

<pre><code>let storeObject = XMLMapper&lt;BookStore&gt;().map(XMLfile: &#34;books.xml&#34;)
      print(storeObject?.books?.first?.author ?? &#34;nil&#34;)
</code></pre>

<p>我已经成功打印了第一本书的作者,但是我找不到一种方法来打印所有书籍的作者而不得到零。</p>

<p>如果一本书有多个作者,将打印哪一个以及如何全部打印?</p>

<p>对不起,如果我的问题太容易解决,或者是一个非常基本的问题,但我正在努力学习。</p>

<p>提前致谢。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>第三本书的 <code>author</code> 值为零,因为作者不止一个。</p>

<p>自版本 <a href="https://github.com/gcharita/XMLMapper/releases/tag/1.4.4" rel="noreferrer noopener nofollow">1.4.4</a>的 <a href="https://github.com/gcharita/XMLMapper" rel="noreferrer noopener nofollow">XMLMapper</a>您可以使用 <code>Array</code> 映射这些情况。</p>

<p>具体来说,您可以使用 <code>String</code> 的 <code>Array</code> 来映射 <code>author</code> 标记,例如:</p>

<pre><code>class Book: XMLMappable {
    required init?(map: XMLMap) {
      //Empty
    }

    var nodeName: String!

    var title: String!
    var authors: ?
    var year: Int?
    var price: Double?


    func mapping(map: XMLMap) {
      //category &lt;- map.attributes[&#34;category&#34;]
      title &lt;- map[&#34;title&#34;]
      authors &lt;- map[&#34;author&#34;]
      year &lt;- map[&#34;year&#34;]
      price &lt;- map[&#34;price&#34;]
    }
}
</code></pre>

<p>然后你可以访问所有作者,循环 <code>authors</code> 数组。</p>

<p>希望这会有所帮助。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何访问大子元素?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/53054971/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/53054971/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何访问大子元素?