0

自分で作成したxmlファイルがあります。

   <?xml version='1.0' encoding='utf-8' ?>
    <Root>
        <ChildElements>
            <type name='xx' attr='false'>
                <child id='1' regex='^[0-9]{11}$'>
                    <BBB>
                        <node1 name='aaa' regex='\w{5}'/>
                        <node2 name='bbb' regex='\w{3}'/>
                    </BBB>
                </child>
                <child>
                .
                .
                .
               </child>
           </type>
        </ChildElements>
    </Root>

このようなもの。それをxmlドキュメントオブジェクトに解析し、そのノードを反復処理したいのですが、iosにlibxml2を使用しています。

 NSString *xmlPath = [[NSBundle mainBundle] pathForResource:@"xmlcontent" ofType:@"xml"];
    NSData *xmlData = [NSData dataWithContentsOfFile:xmlPath];
    NSString* xml = [[NSString alloc ] initWithData:xmlData encoding:NSUTF8StringEncoding];
int size=[xml lengthOfBytesUsingEncoding:NSUTF8StringEncoding];    
xmlDocPtr docptr=xmlParseMemory([xml UTF8String], size);

しかし、docptr オブジェクトにはルート ノードであるノードが 1 つしかなく、ルート ノードの子ノードを取得しようとすると、@"text" という名前の空のノードが返されます。
NSXMLParser は同じ XML を簡単に解析しますが、NSXMLParser を使用してドキュメントを作成し、ノードを反復処理する方法がわかりません。

4

1 に答える 1

0

おそらくエラーは、XML が有効ではないということです。

<?xml version='1.0' encoding='utf-8' ?>
<Root>
    <ChildElements>
        <type name='xx' attr='false' />
            <child id='1' regex='^[0-9]{11}$'>
                <BBB>
                    <node1 name='aaa' regex='w{5}' />
                    <node2 name='bbb' regex='w{3}' />
                </BBB>
            </child>

    </ChildElements>
</Root>

オンラインの XML Validator でXML を検証できます

于 2012-05-29T11:28:16.933 に答える