| 1 |
#import <Foundation/Foundation.h> |
| 2 |
#import <libxml/tree.h> |
| 3 |
|
| 4 |
@class DDXMLDocument; |
| 5 |
|
| 6 |
|
| 7 |
enum { |
| 8 |
DDXMLInvalidKind = 0, |
| 9 |
DDXMLDocumentKind = XML_DOCUMENT_NODE, |
| 10 |
DDXMLElementKind = XML_ELEMENT_NODE, |
| 11 |
DDXMLAttributeKind = XML_ATTRIBUTE_NODE, |
| 12 |
DDXMLNamespaceKind = XML_NAMESPACE_DECL, |
| 13 |
DDXMLProcessingInstructionKind = XML_PI_NODE, |
| 14 |
DDXMLCommentKind = XML_COMMENT_NODE, |
| 15 |
DDXMLTextKind = XML_TEXT_NODE, |
| 16 |
DDXMLDTDKind = XML_DTD_NODE, |
| 17 |
DDXMLEntityDeclarationKind = XML_ENTITY_DECL, |
| 18 |
DDXMLAttributeDeclarationKind = XML_ATTRIBUTE_DECL, |
| 19 |
DDXMLElementDeclarationKind = XML_ELEMENT_DECL, |
| 20 |
DDXMLNotationDeclarationKind = XML_NOTATION_NODE |
| 21 |
}; |
| 22 |
typedef NSUInteger DDXMLNodeKind; |
| 23 |
|
| 24 |
enum { |
| 25 |
DDXMLNodeOptionsNone = 0, |
| 26 |
DDXMLNodeExpandEmptyElement = 1 << 1, |
| 27 |
DDXMLNodeCompactEmptyElement = 1 << 2, |
| 28 |
DDXMLNodePrettyPrint = 1 << 17, |
| 29 |
}; |
| 30 |
|
| 31 |
|
| 32 |
//extern struct _xmlKind; |
| 33 |
|
| 34 |
|
| 35 |
@interface DDXMLNode : NSObject <NSCopying> |
| 36 |
{ |
| 37 |
// Every DDXML object is simply a wrapper around an underlying libxml node |
| 38 |
struct _xmlKind *genericPtr; |
| 39 |
|
| 40 |
// Root nodes free the underlying libxml node on dealloc. |
| 41 |
BOOL freeOnDealloc; |
| 42 |
} |
| 43 |
|
| 44 |
//- (id)initWithKind:(DDXMLNodeKind)kind; |
| 45 |
|
| 46 |
//- (id)initWithKind:(DDXMLNodeKind)kind options:(NSUInteger)options; |
| 47 |
|
| 48 |
//+ (id)document; |
| 49 |
|
| 50 |
//+ (id)documentWithRootElement:(DDXMLElement *)element; |
| 51 |
|
| 52 |
+ (id)elementWithName:(NSString *)name; |
| 53 |
|
| 54 |
+ (id)elementWithName:(NSString *)name URI:(NSString *)URI; |
| 55 |
|
| 56 |
+ (id)elementWithName:(NSString *)name stringValue:(NSString *)string; |
| 57 |
|
| 58 |
+ (id)elementWithName:(NSString *)name children:(NSArray *)children attributes:(NSArray *)attributes; |
| 59 |
|
| 60 |
+ (id)attributeWithName:(NSString *)name stringValue:(NSString *)stringValue; |
| 61 |
|
| 62 |
+ (id)attributeWithName:(NSString *)name URI:(NSString *)URI stringValue:(NSString *)stringValue; |
| 63 |
|
| 64 |
+ (id)namespaceWithName:(NSString *)name stringValue:(NSString *)stringValue; |
| 65 |
|
| 66 |
+ (id)processingInstructionWithName:(NSString *)name stringValue:(NSString *)stringValue; |
| 67 |
|
| 68 |
+ (id)commentWithStringValue:(NSString *)stringValue; |
| 69 |
|
| 70 |
+ (id)textWithStringValue:(NSString *)stringValue; |
| 71 |
|
| 72 |
//+ (id)DTDNodeWithXMLString:(NSString *)string; |
| 73 |
|
| 74 |
#pragma mark --- Properties --- |
| 75 |
|
| 76 |
- (DDXMLNodeKind)kind; |
| 77 |
|
| 78 |
- (void)setName:(NSString *)name; |
| 79 |
- (NSString *)name; |
| 80 |
|
| 81 |
//- (void)setObjectValue:(id)value; |
| 82 |
//- (id)objectValue; |
| 83 |
|
| 84 |
- (void)setStringValue:(NSString *)string; |
| 85 |
//- (void)setStringValue:(NSString *)string resolvingEntities:(BOOL)resolve; |
| 86 |
- (NSString *)stringValue; |
| 87 |
|
| 88 |
#pragma mark --- Tree Navigation --- |
| 89 |
|
| 90 |
- (NSUInteger)index; |
| 91 |
|
| 92 |
- (NSUInteger)level; |
| 93 |
|
| 94 |
- (DDXMLDocument *)rootDocument; |
| 95 |
|
| 96 |
- (DDXMLNode *)parent; |
| 97 |
- (NSUInteger)childCount; |
| 98 |
- (NSArray *)children; |
| 99 |
- (DDXMLNode *)childAtIndex:(NSUInteger)index; |
| 100 |
|
| 101 |
- (DDXMLNode *)previousSibling; |
| 102 |
- (DDXMLNode *)nextSibling; |
| 103 |
|
| 104 |
- (DDXMLNode *)previousNode; |
| 105 |
- (DDXMLNode *)nextNode; |
| 106 |
|
| 107 |
- (void)detach; |
| 108 |
|
| 109 |
- (NSString *)XPath; |
| 110 |
|
| 111 |
#pragma mark --- QNames --- |
| 112 |
|
| 113 |
- (NSString *)localName; |
| 114 |
- (NSString *)prefix; |
| 115 |
|
| 116 |
- (void)setURI:(NSString *)URI; |
| 117 |
- (NSString *)URI; |
| 118 |
|
| 119 |
+ (NSString *)localNameForName:(NSString *)name; |
| 120 |
+ (NSString *)prefixForName:(NSString *)name; |
| 121 |
//+ (DDXMLNode *)predefinedNamespaceForPrefix:(NSString *)name; |
| 122 |
|
| 123 |
#pragma mark --- Output --- |
| 124 |
|
| 125 |
- (NSString *)description; |
| 126 |
- (NSString *)XMLString; |
| 127 |
- (NSString *)XMLStringWithOptions:(NSUInteger)options; |
| 128 |
//- (NSString *)canonicalXMLStringPreservingComments:(BOOL)comments; |
| 129 |
|
| 130 |
#pragma mark --- XPath/XQuery --- |
| 131 |
|
| 132 |
- (NSArray *)nodesForXPath:(NSString *)xpath error:(NSError **)error; |
| 133 |
//- (NSArray *)objectsForXQuery:(NSString *)xquery constants:(NSDictionary *)constants error:(NSError **)error; |
| 134 |
//- (NSArray *)objectsForXQuery:(NSString *)xquery error:(NSError **)error; |
| 135 |
|
| 136 |
@end |