An XMLElement object may have child nodes, specifically comment nodes, processing-instruction nodes, text nodes, and other XMLElement nodes. It may also have attribute nodes and namespace nodes associated with it (however, namespace and attribute nodes are not considered children). Any attempt to add a XMLDocument node, XMLDTD node, namespace node, or attribute node as a child raises an exception. If you add a child node to an XMLElement object and that child already has a parent, XMLElement raises an exception; the child must be detached or copied first.XMLElementオブジェクトは、子ノードを持つかもしれません、具体的にはコメントノード、処理命令ノード、テキストノード、そして他のXMLElementノード。それはまた、それと結びつけられる属性ノードと名前空間ノードを持つかもしれません(しかしながら、名前空間と属性ノードは子と見なされません)。XMLDocumentノード、 XMLDTDノード、名前空間ノード、または属性ノードを子として加えるどんな試みも、例外を引き起こします。あなたがある子ノードをXMLElementオブジェクトに加えるそしてその子が既に親を持つならば、XMLElementは例外を引き起こします;子は最初に分離またはコピーされなければなりません。
Subclassing Notes
サブクラス作成の注意
You can subclass NSXMLElement if you want element nodes with more specialized attributes or behavior, for example, paragraph and font attributes that specify how the string value of the element should appear.
あなたは、NSXMLElementのサブクラスを作ることができます、もしあなたがより特殊化された属性または挙動を持つ要素ノードを望むならば、例えば、段落およびフォント属性、それはどのようにその要素の文字列値が現れるべきか指定します。
Methods to Override
メソッドのオーバーライド
To subclass NSXMLElement you need to override the primary initializer, init(name:uri:), and the methods listed below. In most cases, you need only invoke the superclass implementation, adding any subclass-specific code before or after the invocation, as necessary.NSXMLElementのサブクラスを作るには、あなたはプライマリイニシャライザ init(name:uri:)、そして下で一覧にされるメソッドをオーバーライドする必要があります。ほとんどの場合には、あなたはスーパークラス実装の発動だけが必要です、何らかのサブクラス特有コードをその発動の前または後に加えます、必要に応じて。
NSXMLElement implements isEqual(_:) to perform a deep comparison: two XMLDocument objects are not considered equal unless they have the same name, same child nodes, same attributes, and so on. If you want a different standard of comparison, override isEqual:.
あなたが比較の異なる標準を望むならば、isEqual:をオーバーライドしてください。
Special Considerations
特別な注意事項
Because of the architecture and data model of NSXML, when it parses and processes a source of XML it cannot know about your subclass unless you override the class method replacementClass(for:) to return your custom class in place of an NSXML class. If your custom class has no direct NSXML counterpart—for example, it is a subclass of NSXMLNode that represents CDATA sections—then you can walk the tree after it has been created and insert the new node where appropriate.
NSXMLのアーキテクチャとデータモデルが原因で、それがXMLのソースを構文解析して処理する時にそれはあなたのサブクラスについて知ることはできません、もしあなたがクラスメソッドreplacementClass(for:)をオーバーライドしてあなたのあつらえのクラスをNSXMLクラスの代わりに返すのでなければ。あなたのあつらえのクラスが直接のNSXML相当物を持たないならば — 例えば、それが、NSXMLNodeのサブクラスであり、CDATAセクションを表している — そのときあなたはツリーをそれが作成された後に歩いて行って(walk)、新しいノードを適切なところに挿入できます。
Note that you can safely set the root element of the XML document (using the NSXMLDocumentsetRootElement(_:)method) to be an instance of your subclass because this method only checks to see if the added node is of an element kind (NSXMLElementKind). These precautions do not apply, of course, if you are creating an XML tree programmatically.
注意してください、あなたは何の問題もなくXML書類のルート要素が(NSXMLDocumentのsetRootElement(_:)メソッドを使って)あなたのサブクラスのインスタンスであると設定できます、なぜならこのメソッドは加えられたノードが要素種類(NSXMLElementKind)のものであるか見るために調べるだけだからです。これら予防措置は当てはまりません、もちろん、あなたがXMLツリーをプログラム的に作成しているならば。
Returns an NSXMLElement object initialized with a specified name and a single text-node child containing a specified value.
あるNSXMLElementオブジェクトを返します、指定された名前と単一のテキストノード子で指定値を含むもので初期化されます。
Returns the child element nodes (as NSXMLElement objects) of the receiver that have a specified name.
レシーバの子要素ノードそれらを返します(NSXMLElementオブジェクトとして)、それらは指定された名前を持ちます。
Returns the child element nodes (as NSXMLElement objects) of the receiver that are matched with the specified local name and URI.
レシーバの子要素ノードそれらを返します(NSXMLElementオブジェクトとして)、それらは指定されたローカル名とURIに一致するものです。
Coalesces adjacent text nodes of the receiver that you have explicitly added, optionally including CDATA sections.
レシーバの近接のテキストノードを結合します、それはあなたが明示的に加えたものです、随意にCDATAセクションを含みます。