问题是,我从TBXML类的initWithURL方法返回TBXML元素。我想保存这个TBXML文档,以便在用户离线时解析它,但我似乎无法找到获取整个对象的NSString值的方法。
由于我是Objective-C的新手,这可能也很容易,因为我没有看到任何其他问题。我希望你能帮助我,这个答案对其他人有帮助。
答案 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));
}
此致 约翰