Objective-C:将TBXML元素转换为NSString

时间:2014-03-03 11:43:25

标签: ios objective-c tbxml

问题是,我从TBXML类的initWithURL方法返回TBXML元素。我想保存这个TBXML文档,以便在用户离线时解析它,但我似乎无法找到获取整个对象的NSString值的方法。

由于我是Objective-C的新手,这可能也很容易,因为我没有看到任何其他问题。我希望你能帮助我,这个答案对其他人有帮助。

1 个答案:

答案 0 :(得分:0)

我个人不会使用TBXML,它老了,笨重加上Apple有它自己的NSXMLParser类,但你可以这样做,假设你有一个名为'tbxml'的TBXML实例:

TBXMLElement *root = tbxml.rootXMLElement;

NSString *stringFromXML = [TBXML textForElement:root];

NSLog(@"XML as String: %@",stringFromXML);

我在这里所做的就是将'root'元素基本上放在整个文档中。

在TBXML上使用方法提取根元素的'text',并将其存储在NSString中。

然后,您可以使用任何您想要存储此NSString或其值的方法。

遍历未知或动态XML输入:

- (void)loadUnknownXML {
// Load and parse the test.xml file
tbxml = [[TBXML tbxmlWithXMLFile:@"test.xml"] retain];

// If TBXML found a root node, process element and iterate all children
if (tbxml.rootXMLElement)
[self traverseElement:tbxml.rootXMLElement];


- (void) traverseElement:(TBXMLElement *)element {

do {
// Display the name of the element
NSLog(@"%@",[TBXML elementName:element]);

// Obtain first attribute from element
TBXMLAttribute * attribute = element->firstAttribute;

// if attribute is valid
while (attribute) {
// Display name and value of attribute to the log window
NSLog(@"%@->%@ = %@",
                    [TBXML elementName:element],
                    [TBXML attributeName:attribute],
                    [TBXML attributeValue:attribute]);

// Obtain the next attribute
attribute = attribute->next;
}

// if the element has child elements, process them
if (element->firstChild) 
            [self traverseElement:element->firstChild];

// Obtain next sibling element
} while ((element = element->nextSibling));  
}

此致 约翰