0

URLのxmlを解析するためにNSXMLParserを使用しています。一部の要素には、テキストに特殊文字と斜体が含まれています。

  • テキストにイタリック体のタグが付いた以下の xml 要素を見つけてください。
<name>Verify Settings<i>i</i>patch level</name>

NSXMLParser はテキストを分割し、出力を提供します:設定の確認

要素間の斜体テキストを解析する方法はありますか?

  • 以下の特殊文字を含む xml を見つけてください。
<impact> In 2003, the ¿shared APPL_TOP¿ architecture was introduced, which allowed the sharing of a single APPL_TOP, however the tech stack
 ·  Reduced disk space requirements 
 ·  Reduced maintenance
 ·  Reduced administrative costs 
 ·  Reduced patching down time 
 ·  Less complex to add additional nodes, making scalability easier
 ·  Complexity of instance reduced 
 ·  Easier backups 
 ·  Easier cloning</impact>

テキストを分割して出力: e コスト ·パッチ適用のダウンタイムを短縮 ·ノードを追加する複雑さが軽減され、スケーラビリティが容易になる ·インスタンスの複雑さが軽減される ·バックアップが容易になる ·クローン作成が容易になる

NSXMLParser を使用して、テキスト内の斜体タグと特殊文字を解析する方法に関する提案はありますか?


これが私のfoundCharactersコードです:

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    if (!self.currentStringValue) {
    // currentStringValue is an NSMutableString instance variable
    self.currentStringValue = [[NSMutableString alloc] init];
}
[self.currentStringValue appendString:string];
} 
4

1 に答える 1

1

これらは両方とも、XML 生成の問題よりも XML 構文解析の問題に似ていないように見えます。この XML をどのように生成していますか? 適切な XML ライブラリによって生成されたものとは対照的に、手動で生成された XML のように感じます。

パーサーの観点から XML を見てください:新しい XML タグ自体ではなく、要素内の HTML であることをどのようNSXMLParserに知る必要があるのでしょうか?!? これが実際に XML の外観である場合は、Web サービスを修正する必要があります。<i><name>

たとえば、イタリック体の問題を見ると、問題は<i>新しい要素名のように見えることです。一般に、次のいずれかで表す必要があります。

<name>Verify Settings&lt;i&gt;i&lt;/i&gt;patch level</name>

またはとして

<name><![CDATA[Verify Settings<i>i</i>patch level]]></name>

プロパティのこのエンコードは、name通常、Web サービスで XML エンコードを行う API によって行われます。通常、この動作を得るために何もする必要はありません。ただし、Web サービスが独自の XML を手動で作成している場合、元の質問で説明したような出力が得られる可能性があります。

<?xml ...>2 番目の例では、XML 内の文字は、タグで概説されている文字セットに準拠する必要があると考えていたでしょう。たとえば、次のようになります。

<?xml version="1.0" encoding="ISO-8859-1"?>

あなたの<?xml ...>タグは何と言っていますか?リストされている文字は、そこにリストされているエンコーディング内にありますか?


改訂された を見るとfoundCharacters、新しいレンディションの方がはるかに優れています。以前のレンディションには、特定のandタグfoundCharactersのペアに対して一度だけ呼び出されると想定されていた限り、問題がありました。必ずしもそうとは限りません。最新のレンディションは、必要に応じて正しく作成され、追加されます。これは正しいアプローチであり、 Apple のドキュメントの例と一致しています。気になる型の 1 つ (例: ) を解析している場合にのみ、これを実行する必要があるかもしれませんが、この小さな注意点を考慮すると、この新しいレンディションははるかに見栄えがよくなります。<name></name>currentStringValueelementName<name>

于 2013-03-08T22:04:59.303 に答える