2013-06-21 2 views
2

나는 당신의 도움이 필요 오류를 반환, 내가 GDataXMLDocument를 사용하여 XML 파일을 구문 분석 할 그리고 난 특정 태그의 모든 속성을 가져 싶지만 내가 사용하고있는 경우 아니면 그냥 값GDataXMLDocument nodesForXPath

에게 columnHeading 얻기 위하여 내게는 XPath의 가치를 제공
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 내용입니다.

지난 3 개월에서 여기 갇혀

<?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> 
. 너의 도움이 필요해.

미리 감사드립니다.

+0

요구 사항을 이해할 수 있도록 xml을 제공해주십시오. 특성을 가져 오려고하면 왜 노드를 사용하고 있습니까? – Anupdas

+0

안녕하세요 anupdas, 내가 xml 콘텐츠로 내 질문을 업데이 트 지금 나는 SID, SNAME 같은 saw-sql : columnHeading의 값을 원한다 ... – Apple

답변

3

마지막으로 나는 내 질문과 관련된 해결책을 얻었으며 여기에 대한 대답이 있습니다.

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); 

}