iphone - GDataXMLDocument NodesForXPath 返回错误

标签 iphone ios xpath xml-parsing gdata

我需要你的帮助,我想使用GDataXMLDocument解析XML文件,并且我想获取特定标签的所有属性,但是当我使用或只是向我提供XPath的值来获取columnHeading值

GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:[NSData dataWithContentsOfFile:path] encoding:NSUTF8StringEncoding  error:NULL];

NSArray *tempArray = [doc nodesForXPath:@"//root/xsd:schema" namespaces:nil error:nil];

它返回以下错误。

XPath 错误:未定义的命名空间前缀 xmlXPathEval:评估失败

这是我的 XML 内容。

<?xml version="1.0" encoding="utf-8"?>
<SH xmlns="urn:schemas-microsoft-com:xml-analysis:rowset">
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:saw-sql="urn:saw-sql" targetNamespace="urn:schemas-microsoft-com:xml-analysis:rowset">
    <xsd:complexType name="R">
        <xsd:sequence>
            <xsd:element name="S0" saw-sql:columnHeading="SID" saw-sql:columnID="0"/>
            <xsd:element name="S1" saw-sql:columnHeading="SNAME" saw-sql:columnID="1"/>
            <xsd:element name="S2" saw-sql:columnHeading="CLASS" saw-sql:columnID="2"/>
            <xsd:element name="S3" saw-sql:columnHeading="ADD" saw-sql:columnID="3"/>
            <xsd:element name="S4" saw-sql:columnHeading="CITY" saw-sql:columnID="4"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>

过去三天一直卡在这里。需要你的帮助。

提前致谢。

最佳答案

终于我得到了与我的问题相关的解决方案......这就是答案。

GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:[NSData dataWithContentsOfFile:path] 编码:NSUTF8StringEncoding 错误:NULL];

NSDictionary *myNS = [NSDictionary dictionaryWithObjectsAndKeys:
                      @"urn:schemas-microsoft-com:xml-analysis:rowset", @"xmlns",
                      @"http://www.w3.org/2001/XMLSchema", @"xsd",
                      @"urn:saw-sql",@"saw-sql", nil];

 NSArray *tempArray = [doc nodesForXPath:@"//xmlns:RS/xsd:schema/xsd:complexType/xsd:sequence/xsd:element" namespaces:myNS error:nil];

NSMutableArray *keyArray = [[NSMutableArray alloc]initWithCapacity:0];

for(GDataXMLElement *columns in tempArray)
{
    GDataXMLNode *xmlElement = [columns attributeForName:@"saw-sql:columnHeading"];

    //  GDataXMLNode* xmlElement = [[[element2 elementsForName:@"xsd:element"]objectAtIndex:0]attributeForName:@"saw-sql:columnHeading"];
    [keyArray addObject:xmlElement.stringValue];
    //  NSLog(@"%@",xmlElement.stringValue);

}

关于iphone - GDataXMLDocument NodesForXPath 返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17232712/

相关文章:

ios - 如果显示 View Controller ,状态栏不会隐藏

ios - UIDocumentMenuViewController 的自定义图像仅显示蓝色框

ios - 无法将类型 'UIBarButtonItem' 的值转换为 'UITableViewCell'

xpath - 如何找到Xpath?

php - 相对 xpath php

iphone - 两个 View ,一个在纵向下方,横向并排使用布局约束

ios - 应用程序在 ios 的启动屏幕或启动屏幕中被击中

php - 提取html代码中的两个字符串

iphone - 在 iOS 5 上禁用字幕会在屏幕上保留最后显示的字幕文本

ios - 使用另一个 UIImageView 的 UIImageViews 坐标范围