CFXMLNode.h
1 /* 2 * Copyright (c) 2015 Apple Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23 24 /* CFXMLNode.h 25 Copyright (c) 1998-2014, Apple Inc. All rights reserved. 26 */ 27 28 /* CFXMLParser (and thus CFXMLNode) are deprecated as of Mac OS X 10.8 and iOS 6.0. The suggested replacements are the Foundation classes NSXMLParser and NSXMLDocument, or the libxml2 library. */ 29 30 #if !defined(__COREFOUNDATION_CFXMLNODE__) 31 #define __COREFOUNDATION_CFXMLNODE__ 1 32 33 #include <CoreFoundation/CFArray.h> 34 #include <CoreFoundation/CFDictionary.h> 35 #include <CoreFoundation/CFString.h> 36 #include <CoreFoundation/CFTree.h> 37 #include <CoreFoundation/CFURL.h> 38 39 CF_IMPLICIT_BRIDGING_ENABLED 40 CF_EXTERN_C_BEGIN 41 42 enum { 43 kCFXMLNodeCurrentVersion = 1 44 }; 45 46 typedef const struct __CFXMLNode * CFXMLNodeRef; 47 typedef CFTreeRef CFXMLTreeRef; 48 49 /* An CFXMLNode describes an individual XML construct - like a tag, or a comment, or a string 50 of character data. Each CFXMLNode contains 3 main pieces of information - the node's type, 51 the data string, and a pointer to an additional data structure. The node's type ID is an enum 52 value of type CFXMLNodeTypeID. The data string is always a CFStringRef; the meaning of the 53 string is dependent on the node's type ID. The format of the additional data is also dependent 54 on the node's type; in general, there is a custom structure for each type that requires 55 additional data. See below for the mapping from type ID to meaning of the data string and 56 structure of the additional data. Note that these structures are versioned, and may change 57 as the parser changes. The current version can always be identified by kCFXMLNodeCurrentVersion; 58 earlier versions can be identified and used by passing earlier values for the version number 59 (although the older structures would have been removed from the header). 60 61 An CFXMLTree is simply a CFTree whose context data is known to be an CFXMLNodeRef. As 62 such, an CFXMLTree can be used to represent an entire XML document; the CFTree 63 provides the tree structure of the document, while the CFXMLNodes identify and describe 64 the nodes of the tree. An XML document can be parsed to a CFXMLTree, and a CFXMLTree 65 can generate the data for the equivalent XML document - see CFXMLParser.h for more 66 information on parsing XML. 67 */ 68 69 /* Type codes for the different possible XML nodes; this list may grow.*/ 70 typedef CF_ENUM(CFIndex, CFXMLNodeTypeCode) { 71 kCFXMLNodeTypeDocument = 1, 72 kCFXMLNodeTypeElement = 2, 73 kCFXMLNodeTypeAttribute = 3, 74 kCFXMLNodeTypeProcessingInstruction = 4, 75 kCFXMLNodeTypeComment = 5, 76 kCFXMLNodeTypeText = 6, 77 kCFXMLNodeTypeCDATASection = 7, 78 kCFXMLNodeTypeDocumentFragment = 8, 79 kCFXMLNodeTypeEntity = 9, 80 kCFXMLNodeTypeEntityReference = 10, 81 kCFXMLNodeTypeDocumentType = 11, 82 kCFXMLNodeTypeWhitespace = 12, 83 kCFXMLNodeTypeNotation = 13, 84 kCFXMLNodeTypeElementTypeDeclaration = 14, 85 kCFXMLNodeTypeAttributeListDeclaration = 15 86 }; 87 88 typedef struct { 89 CFDictionaryRef attributes; 90 CFArrayRef attributeOrder; 91 Boolean isEmpty; 92 char _reserved[3]; 93 } CFXMLElementInfo; 94 95 typedef struct { 96 CFStringRef dataString; 97 } CFXMLProcessingInstructionInfo; 98 99 typedef struct { 100 CFURLRef sourceURL; 101 CFStringEncoding encoding; 102 } CFXMLDocumentInfo; 103 104 typedef struct { 105 CFURLRef systemID; 106 CFStringRef publicID; 107 } CFXMLExternalID; 108 109 typedef struct { 110 CFXMLExternalID externalID; 111 } CFXMLDocumentTypeInfo; 112 113 typedef struct { 114 CFXMLExternalID externalID; 115 } CFXMLNotationInfo; 116 117 typedef struct { 118 /* This is expected to change in future versions */ 119 CFStringRef contentDescription; 120 } CFXMLElementTypeDeclarationInfo; 121 122 typedef struct { 123 /* This is expected to change in future versions */ 124 CFStringRef attributeName; 125 CFStringRef typeString; 126 CFStringRef defaultString; 127 } CFXMLAttributeDeclarationInfo; 128 129 typedef struct { 130 CFIndex numberOfAttributes; 131 CFXMLAttributeDeclarationInfo *attributes; 132 } CFXMLAttributeListDeclarationInfo; 133 134 typedef CF_ENUM(CFIndex, CFXMLEntityTypeCode) { 135 kCFXMLEntityTypeParameter, /* Implies parsed, internal */ 136 kCFXMLEntityTypeParsedInternal, 137 kCFXMLEntityTypeParsedExternal, 138 kCFXMLEntityTypeUnparsed, 139 kCFXMLEntityTypeCharacter 140 }; 141 142 typedef struct { 143 CFXMLEntityTypeCode entityType; 144 CFStringRef replacementText; /* NULL if entityType is external or unparsed */ 145 CFXMLExternalID entityID; /* entityID.systemID will be NULL if entityType is internal */ 146 CFStringRef notationName; /* NULL if entityType is parsed */ 147 } CFXMLEntityInfo; 148 149 typedef struct { 150 CFXMLEntityTypeCode entityType; 151 } CFXMLEntityReferenceInfo; 152 153 /* 154 dataTypeCode meaning of dataString format of infoPtr 155 =========== ===================== ================= 156 kCFXMLNodeTypeDocument <currently unused> CFXMLDocumentInfo * 157 kCFXMLNodeTypeElement tag name CFXMLElementInfo * 158 kCFXMLNodeTypeAttribute <currently unused> <currently unused> 159 kCFXMLNodeTypeProcessingInstruction name of the target CFXMLProcessingInstructionInfo * 160 kCFXMLNodeTypeComment text of the comment NULL 161 kCFXMLNodeTypeText the text's contents NULL 162 kCFXMLNodeTypeCDATASection text of the CDATA NULL 163 kCFXMLNodeTypeDocumentFragment <currently unused> <currently unused> 164 kCFXMLNodeTypeEntity name of the entity CFXMLEntityInfo * 165 kCFXMLNodeTypeEntityReference name of the referenced entity CFXMLEntityReferenceInfo * 166 kCFXMLNodeTypeDocumentType name given as top-level element CFXMLDocumentTypeInfo * 167 kCFXMLNodeTypeWhitespace text of the whitespace NULL 168 kCFXMLNodeTypeNotation notation name CFXMLNotationInfo * 169 kCFXMLNodeTypeElementTypeDeclaration tag name CFXMLElementTypeDeclarationInfo * 170 kCFXMLNodeTypeAttributeListDeclaration tag name CFXMLAttributeListDeclarationInfo * 171 */ 172 173 CF_EXPORT 174 CFTypeID CFXMLNodeGetTypeID(void) CF_DEPRECATED(10_0, 10_8, 2_0, 6_0); 175 176 /* Creates a new node based on xmlType, dataString, and additionalInfoPtr. version (together with xmlType) determines the expected structure of additionalInfoPtr */ 177 CF_EXPORT 178 CFXMLNodeRef CFXMLNodeCreate(CFAllocatorRef alloc, CFXMLNodeTypeCode xmlType, CFStringRef dataString, const void *additionalInfoPtr, CFIndex version) CF_DEPRECATED(10_0, 10_8, 2_0, 6_0); 179 180 /* Creates a copy of origNode (which may not be NULL). */ 181 CF_EXPORT 182 CFXMLNodeRef CFXMLNodeCreateCopy(CFAllocatorRef alloc, CFXMLNodeRef origNode) CF_DEPRECATED(10_0, 10_8, 2_0, 6_0); 183 184 CF_EXPORT 185 CFXMLNodeTypeCode CFXMLNodeGetTypeCode(CFXMLNodeRef node) CF_DEPRECATED(10_0, 10_8, 2_0, 6_0); 186 187 CF_EXPORT 188 CFStringRef CFXMLNodeGetString(CFXMLNodeRef node) CF_DEPRECATED(10_0, 10_8, 2_0, 6_0); 189 190 CF_EXPORT 191 const void *CFXMLNodeGetInfoPtr(CFXMLNodeRef node) CF_DEPRECATED(10_0, 10_8, 2_0, 6_0); 192 193 CF_EXPORT 194 CFIndex CFXMLNodeGetVersion(CFXMLNodeRef node) CF_DEPRECATED(10_0, 10_8, 2_0, 6_0); 195 196 /* CFXMLTreeRef */ 197 198 /* Creates a childless, parentless tree from node */ 199 CF_EXPORT 200 CFXMLTreeRef CFXMLTreeCreateWithNode(CFAllocatorRef allocator, CFXMLNodeRef node) CF_DEPRECATED(10_0, 10_8, 2_0, 6_0); 201 202 /* Extracts and returns the node stored in xmlTree */ 203 CF_EXPORT 204 CFXMLNodeRef CFXMLTreeGetNode(CFXMLTreeRef xmlTree) CF_DEPRECATED(10_0, 10_8, 2_0, 6_0); 205 206 CF_EXTERN_C_END 207 CF_IMPLICIT_BRIDGING_DISABLED 208 209 #endif /* ! __COREFOUNDATION_CFXMLNODE__ */ 210