objective-c - 如何在不关闭标签的情况下解析XML数据Objective-C

标签 objective-c ios xml cocoa-touch nsxmlparser

Possible Duplicate:
Using an NSXMLParser to parse HTML


我正在尝试解析以下XML数据,但结构混乱,并且没有结束标记。这不是我制作的XML文件,而是我正在尝试从Web服务器解析的文件。

    <FORM ACTION="/prod/bwckgens.p_proc_term_date" METHOD="POST" onSubmit="return checkSubmit()">
<INPUT TYPE="hidden" NAME="p_calling_proc" VALUE="bwckschd.p_disp_dyn_sched">
<TABLE  CLASS="dataentrytable" summary="This layout table is used for term selection."width="100%"><CAPTION class="captiontext">Search by Term: </CAPTION>
<TR>
<TD CLASS="dedefault"><LABEL for=term_input_id><SPAN class="fieldlabeltextinvisible">Term</SPAN></LABEL>
<SELECT NAME="p_term" SIZE="1"  ID="term_input_id">
<OPTION VALUE="">None
<OPTION VALUE="201320">Spring 2013
<OPTION VALUE="201315">STAR/BGR: New Admits Fall 2012 (View only)
<OPTION VALUE="201310">Fall 2012 (View only)
<OPTION VALUE="201230">Summer 2012 (View only)
<OPTION VALUE="201220">Spring 2012 (View only)
<OPTION VALUE="201210">Fall 2011 (View only)
<OPTION VALUE="201130">Summer 2011 (View only)
<OPTION VALUE="201120">Spring 2011 (View only)
<OPTION VALUE="201110">Fall 2010 (View only)
<OPTION VALUE="201030">Summer 2010 (View only)
<OPTION VALUE="201020">Spring 2010 (View only)
<OPTION VALUE="201010">Fall 2009 (View only)
<OPTION VALUE="200930">Summer 2009 (View only)
<OPTION VALUE="200920">Spring 2009 (View only)
<OPTION VALUE="200910">Fall 2008 (View only)
<OPTION VALUE="200830">Summer 2008 (View only)
<OPTION VALUE="200820">Spring 2008 (View only)
</SELECT>
</TD>
</TR>
</TABLE>
<BR>
<BR>
<INPUT TYPE="submit" VALUE="Submit">
<INPUT TYPE="reset" VALUE="Reset">
</FORM>

HTML文件还有很多其他内容,但我仅包括相关内容。我想获得括号内所有数字OPTION VALUE="these numbers"和Term。例如2013年 Spring 。

由于没有结束标记,如何使用NSXMLParser获取这些值。我尝试打印出解析器遇到的所有元素
NSLog(@"Current start element: %@\n", elementName);
NSLog(@"Current attr:%@\n", attributeDict.description);

但我在任何地方都看不到OPTIONVALUE。这是NSLog语句的结果:
2012-10-28 13:58:47.638 Purdue Course Finder[32890:c07] Current start element: HTML
2012-10-28 13:58:47.638 Purdue Course Finder[32890:c07] Current attr:{
    lang = en;
}
2012-10-28 13:58:47.639 Purdue Course Finder[32890:c07] Current start element: HEAD
2012-10-28 13:58:47.639 Purdue Course Finder[32890:c07] Current attr:{
}
2012-10-28 13:58:47.639 Purdue Course Finder[32890:c07] Current start element: META
2012-10-28 13:58:47.640 Purdue Course Finder[32890:c07] Current attr:{
    content = "text/html; charset=UTF-8";
    "http-equiv" = "Content-Type";
}
2012-10-28 13:58:47.640 Purdue Course Finder[32890:c07] Current start element: META
2012-10-28 13:58:47.640 Purdue Course Finder[32890:c07] Current attr:{
    CONTENT = "no-cache";
    "HTTP-EQUIV" = Pragma;
    NAME = "Cache-Control";
}
2012-10-28 13:58:47.641 Purdue Course Finder[32890:c07] Current start element: META
2012-10-28 13:58:47.641 Purdue Course Finder[32890:c07] Current attr:{
    CONTENT = "no-cache";
    "HTTP-EQUIV" = "Cache-Control";
    NAME = "Cache-Control";
}
2012-10-28 13:58:47.641 Purdue Course Finder[32890:c07] Current start element: LINK
2012-10-28 13:58:47.642 Purdue Course Finder[32890:c07] Current attr:{
    HREF = "/css/web_defaultapp.css";
    REL = stylesheet;
    TYPE = "text/css";
}
2012-10-28 13:58:47.642 Purdue Course Finder[32890:c07] Current start element: LINK
2012-10-28 13:58:47.642 Purdue Course Finder[32890:c07] Current attr:{
    HREF = "/css/web_defaultprint.css";
    REL = stylesheet;
    TYPE = "text/css";
    media = print;
}
2012-10-28 13:58:47.643 Purdue Course Finder[32890:c07] Current start element: TITLE
2012-10-28 13:58:47.643 Purdue Course Finder[32890:c07] Current attr:{
}
2012-10-28 13:58:47.643 Purdue Course Finder[32890:c07] Current end element: TITLE
2012-10-28 13:58:47.644 Purdue Course Finder[32890:c07] Current start element: META
2012-10-28 13:58:47.644 Purdue Course Finder[32890:c07] Current attr:{
    CONTENT = "text/javascript";
    "HTTP-EQUIV" = "Content-Script-Type";
    NAME = "Default_Script_Language";
}
2012-10-28 13:58:47.644 Purdue Course Finder[32890:c07] Current start element: SCRIPT
2012-10-28 13:58:47.645 Purdue Course Finder[32890:c07] Current attr:{
    LANGUAGE = JavaScript;
    TYPE = "text/javascript";
}
2012-10-28 13:58:47.645 Purdue Course Finder[32890:c07] Current end element: SCRIPT
2012-10-28 13:58:47.645 Purdue Course Finder[32890:c07] Current start element: SCRIPT
2012-10-28 13:58:47.646 Purdue Course Finder[32890:c07] Current attr:{
    LANGUAGE = JavaScript;
    TYPE = "text/javascript";
}
2012-10-28 13:58:47.646 Purdue Course Finder[32890:c07] Current end element: SCRIPT

我什至尝试在- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string方法中到处打印。它在任何地方都找不到这些标签。我想知道是否有人可以帮助我解析此构造不良的XML文件。谢谢!

最佳答案

在我看来,您似乎并没有获得感兴趣的主要数据,这可能是因为HEAD的格式也有误(尽管我不确定,因为文档的这一部分未包含在内)在问题中)。

我建议在收到文档后对其进行细微调整,直到正确处理为止。您不必修复所有错误,只需修复阻止您获取选项数据的错误。知道所需的修复程序后,请在收到文件并正常处理后进行一些自动替换/重新命名。

关于objective-c - 如何在不关闭标签的情况下解析XML数据Objective-C ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13111485/

相关文章:

iphone - 打击 iOS 应用内购买盗版的策略?

objective-c - 为什么自定义 setter 的存在会破坏我的自定义 getter?

ios - Firebase 身份验证尝试使用 Apple 的身份 token 会在 Xamarin.iOS 应用程序中返回 17999 INVALID_CREDENTIAL_OR_PROVIDER_ID

ios - 使用 stackview 时偏离中心 center.x

Android Views - 使一个 View 对下面的 View 透明

java - XSL :FO inline and pretty print

android - 如何在android中的xml中制作一个具有两种颜色的可绘制矩形?

iphone - Objective C iPhone 性能问题

iphone - 将 JSON 转换为 NSDictionary 或 NSArray - iOS

objective-c - 当模拟器从 XCode 关闭时,是否有运行的方法?