Как разобрать XML-файл с помощью xmlparsing на iphone? - PullRequest
2 голосов
/ 19 апреля 2011

Как получить доступ к следующему XML-файлу с помощью xmlparsing на iphone?

<?xml version="1.0" encoding="iso-8859-1"?>
<chapter>
 <TITLE>Title &plainEntity;</TITLE>
 <para>
  <informaltable>
   <tgroup cols="3">
    <tbody>
     <row><entry>a1</entry><entry morerows="1">b1</entry><entry>c1</entry></row>
     <row><entry>a2<<?xml version="1.0" encoding="iso-8859-1"?>
<ADDRESS>
        <CONTACT>
        <NAME FIRST="Fred" LAST="Bloggs" NICK="Bloggsie" TITLE="Mr" />
        <STREET HOME="5 Any Street" WORK="Floor 24, BigShot Tower" />
        <CITY HOME="Little Town" WORK="Anycity" />
        <COUNTY HOME="Anyshire" WORK="Anyshire" />
        <POSTAL HOME="as plain text" WORK="text" />
        <COUNTRY HOME="UK" WORK="UK" />
        <PHONE HOME="as text" WORK="text" />
        <FAX HOME="none" WORK="555" />
        <MOBILE HOME="444" WORK="333" />
        <WEB HOME="www.codehelp.co.uk" WORK="" />
        <COMPANY>Full name of company here</COMPANY>
        <GENDER>male</GENDER>
        <BDAY>Add tags for year, month and day to make this more useful</BDAY>
        <ANNI>some date long forgotten :-)</ANNI>
        <SPOUSE>angry</SPOUSE>
        <CHILDREN>Make sure this tag is one of the ones allowed to repeat in the DTD</CHILDREN>
        <COMMENT>comments here</COMMENT>
        <EMAILONE>Either use fixed tags like this, or change to a repeating tag</EMAILONE>
        <EMAILTWO>second email line</EMAILTWO>
        <EMAILTHREE>third</EMAILTHREE>
        <EMAILFOUR>fourth</EMAILFOUR>
        </CONTACT>
</ADDRESS>/entry><entry>c2</entry></row>
     <row><entry>a3</entry><entry>b3</entry><entry>c3</entry></row>
    </tbody>
   </tgroup>
  </informaltable>
 </para>
 &systemEntity;
 <section id="about">
  <title>About this Document</title>
  <para>
   <!-- this is a comment -->

  </para>
 </section>
</chapter>

Ответы [ 2 ]

4 голосов
/ 19 апреля 2011

SDK предоставляет два способа анализа XML: libxml2 и NSXMLParser. libxml2 - самый быстрый. Чтобы использовать его в своем проекте, перейдите в настройки сборки для вашего проекта iPhone App и установите следующее:

  • Other linker flags = -lxml2
  • Header Search Paths: $(SDKROOT)/usr/include/libxml2

Затем загрузите XPathQuery.m и XPathQuery.h со следующей страницы: Использование libxml2 для синтаксического анализа XML и запросов XPath в Какао , в котором также приведено руководство по его использованию. Этот класс XPathQuery является упрощенным способом анализа XML. Я рекомендую это, если вы не хотите писать тот же самый код самостоятельно, что не так.

Имея это на месте, сделайте

NSString *string = nil; // put your html document here

NSData *htmlData = [string dataUsingEncoding:NSUTF8StringEncoding];
NSString *xpath = @"//row"; // any standard XPath expression
NSArray *nodesArray = PerformHTMLXPathQuery(htmlData, xpath);
NSDictionary *dict;
if (0<[nodesArray count]) {
    dict = [nodesArray objectAtIndex:0];
}

На этом этапе элементы вашего документа должны быть в словаре dict.

1 голос
/ 19 апреля 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...