• 締切済み

Swiftでhtmlを全てParseできない

SWIFTを使用してあるサイトをNSXMLParserでパースしたところ opening and ending tag mismatchが出て途中で解析が出来なくなってしまいます。 XMLが不正なためかとは思いますが外部サイトの為手を入れることは出来ません。 このエラーを無視して処理する方法はないでしょうか?

みんなの回答

回答No.1

どんなコーディングしていてどんなサイトからどんなXMLデータを読み込んでどこでエラーが発生しているのか、具体的なエラーの様子をさっぱり書いてないので回答しづらいですが、特定のサイトから読み込んでいて、そのサイトのデータのどこがどう誤っているかパターンがはっきりわかっているなら、読み込んだXMLデータの一部を文字列編集してからNSXMLParserでパースすればよいと思います。 不特定のサイトにアクセスしていて一部パースエラーになるサイトがあるという話なら、そもそもXMLデータが誤っているわけですから、エラーとして扱えばよいと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • LibreOfficeファイルが開かない

    直前まで編集していて、保存・再起動したところ 次のようなエラーが出てファイルが開けなくなりました。 どうしたら開けるようになりますか? 「SAXParseException: '[word/document.xml line 2]: Opening and ending tag mismatch: inline line 0 and anchor ', Stream 'word/document.xml', Line 2, Column 83631(row,col) でファイル書式エラーが見つかりました」 LibreOfficeの再インストール、パソコンの再起動、ファイルのコピーは試してみましたが開けませんでした。 LibreOfficeバージョン:5.0.2.2 ファイル拡張子:docx

  • [JS] htmlをパースしてdomにしたい

    テキストのhtmlライクの構文があります。 これをパースして、dom構造のオブジェクトに変換したいです。 createElement("div")して、innerHTMLに入れる方法の場合、 IEではhtmlで定義されていないタグ名が無視されてしまうため、不可です。 xmlのパーサに食わせる方法の場合、 テキストが厳密にxml構文に沿っていないとエラーとなるので、 閉じタグ漏れがあるテキストを処理できないため、不可です。 パースする関数を作成するしかないかと思っています。 すでに誰かが作成していそうですが、探しても見つかりませんでした。 こうやって作った、とか、参考となるページなどありましたら教えてください。

  • リバースプロキシの開発ついての質問

    apacheでリバースプロキシを開発をしています。(c言語) このプロキシは、リクエストを受けてユーザの属性を判別して後ろのサービスにリクエストを送る、というものです。 このリバースプロキシで質問なのですが、xml形式のリクエストをうけて、ある特定のユーザを判別した場合、リクエストのxmlにパラメータ(ユーザ1、2,3のようなフラグ)を追加して送りたいとかんがえているのですが、このようなことをすることは可能でしょうか? いまapacheのモジュールでこの処理をかいえているのですが、 リクエストを受信 → xmlのパース、解析 ー> ユーザの判別 ー> xmlにパラメータの追加 までの実装のめどは付いているのですが、 リクエストを受信 → xmlのパース、解析 ー> ユーザの判別 ー> xmlにパラメータの追加  ー> 追加したxmlで後ろのサービスにリクエストする 追加したxmlで後ろのサービスにリクエストするというのがどのようにすればいいのかがわかりません。(request_recの中のなんらかのパラメータに改ざんしたxmlをつけるのかなとはおもっているのですが・・・) 専門的なことになってしまい、答えにくいかもしれませんが、 1.リバースプロキシ上でリクエストを書き換えて後ろのサービスに送るのは可能か 2.わかるのであればどのようにすれば後ろのサービスに改ざんしたxmlを送れるのか を教えていただければ幸いです。アドバイス程度のものでも構いません。 宜しくお願いします。

  • Google Sitemaps 用XMLの作成

    Google Sitemaps 用XML自動生成ツールでサイトマップを作成まではいったのですが、作成でできたファイルは、 -<urlset> -<url> から始まっており、 <?xml version="1.0" encoding="UTF-8"?>や <!DOCTYPE html PUBLIC が表示されていませんでした。 その部分を補足してから、アップロードするのでいいでしょうか。 また補足したファイルをブラウザで見た所、 XML パースエラー: タグの対応が間違っています。終了タグが必要です: </head> と出るのですが、</head>はすでにあります。 正式なxmlの<?xml version="1.0" encoding="UTF-8"?>から</head> までを教えて下さい。 またはGoogle Sitemaps 用XML自動生成ツールで出て来たタグはそのままで、-<urlset>から始まっているままでアップすればいいのでしょうか。

    • ベストアンサー
    • CSS
  • 終了タグが認識されない?

    XercesにてXMLをパースしようとすると、 org.xml.sax.SAXParseException: The element type "td" must be terminated by the matching end-tag "</td>". のような例外が発生してしまいます。 解析ソースの該当する部分は(1) <table><tr><td>調理器具</td></tr></table> です。 しかし(2) <table><tr><td>調理器具 </td></tr></table> というように、終了タグの前に半角スペースを入れるだけで、例外は発生しなくなります。 できれば(1)のようなXML文書としたいのですが、どうすればいいでしょうか。 パーサのセッティングが原因? 以下がパース時のパーサの設定です。 parser.setFeature( "http://xml.org/sax/features/validation", true); parser.setFeature( "http://xml.org/sax/features/namespaces", false); parser.setFeature( "http://apache.org/xml/features/validation/schema", true); parser.setIncludeIgnorableWhitespace(true); parser.setErrorHandler(new DefaultHandler()); よろしくお願いします。

    • 締切済み
    • XML
  • XML DOM XMLパーサーについて理解していません

    XMLについてイマイチ理解していないので教えてください。PHPでXMLファイルを開いて何らかの処理をするとします。例えば <?php //ドキュメントオブジェクトの作成 $doc = new DOMDocument(); //XML 文書ファイルのパース(DOM ツリーの作成) $doc->load("docs/td101.xml") //要素"b"を取得する $bElement = $doc->getElementsByTagName("b")->item(0); //取得した要素"b"に属性"ad"を設定する $bElement->setAttribute("ad","Fukuoka"); //ドキュメントをシリアライズする $doc->save("docs/result101.xml"); ?> のようにXMLファイルに属性を追加するという処理を行うとします。この時、DOMはPHPによって生成されるんでしょうか?またXMLはXMLパーサーによって解析されると本で読んだのですが、この場合PHPがXMLパーサーの機能を持っているんでしょうか?それともブラウザにXMLパーサーの機能があり、ブラウザ側で処理をされているのでしょうか?意味がわからなくて申し訳ないですが、この辺りを理解していなくて・・・御願いいたします。

    • ベストアンサー
    • XML
  • VC6でXMLをパースしたいのですが、皆さんはどうされているのでしょうか?

    VC6でXMLをパースしたいのですが、皆さんはどうされているのでしょうか? 基本的に正しいXMLでないとparseしないと思いますが、rubyなどでは簡単に出来るみたいですがCではどのように記述するべきかさっぱりわかりん。 マクロソフトにの何とかという?タイプライブラリを使うとどこかのページで見ましたが、得る覚えです。 基本的に以下のような解析が出来れば十分ですが良い方法がございましたらご教授ください。 <main> <shohin>魚さかな魚</shohin> <comment>魚を食べると</comment> <price>500</price> <date>2007-04-01</date> </main> 以下と同等に処理できるものを探しています。 shohin[] = "魚さかな魚"; comment[] = "魚を食べると"; price = 500; date[] = "2007-04-01";

  • HasAttributes 的な関数はないでしょう

    お世話になります。 C# WPFで作成しております。 C#でXMLファイルを読み込んで、「view」アトリビュートがあるタグにだけ 処理をしたいと思い下記のソース・xmlを作成しました。 しかしながら、number=1にはviewアトリビュートもあるのですが、 number=2以降はアトリビュートがないのでエラーがでます。 しかしながら、全てのpageタグにviewアトリビュートをつける手間を 増やしたくありません。 viewアトリビュートがあれば、中を見て、if分チェック、タグがなければ、無視をして エラーを出さずに処理を続けるにはどうしたらよいでしょうか? お手数ですがよろしくお願い致します。 --------------C#ソース------------- xmlDocument = new XmlDocument(); xmlDocument.Load(XML文書); //読み込み XmlNodeList nodeList = xmlDocument.SelectNodes("/data/page");//page以下のノードを読み込み int count = nodeList.Count; for (int i = 0; i < count; i++) { if("on"==nodeList[i].Attributes["view"].Value) //viewタグがonなら処理をする {         処理をする } } ----------xml---------- <data> <page number="1" view="on"></page> <page number="2" ></page> <page number="3" ></page> <page number="4" ></page> ------------------------ </data>

  • お気に入りに追加されないようにするタグ

    TOPページ以外の不正アクセスを禁止したいのでタグを教えてください。(というかあるのでしょうか?) 実はHPを管理しているのですが、最近TOPページから入らずに他のぺージからサイトに入ってくる方がいます。TOPページに関してはお気に入りやブックマークをしてもらってもかまわないのですが他のページにダイレクトにこられると入場者数の把握やアクセス解析ができないのです。(カウンターとアクセス解析がTOPページにあるのです)そういう制限とかできるでしょうか?タグがなければCGIでもかまわないのですが、CGIは未経験なので、できれば簡単に操作できるようにしたいのです。おしえてください、お願いします。

    • ベストアンサー
    • HTML
  • 検索エンジンのHTML解析について

    Googleなどの検索エンジンの仕組みについて教えてください。 Googleなどは色々なサイトを巡回し、HTML、又はXMLを取得していると思います。 その場合、そのページのHTMLコードなど全てをデータベース等に格納しているのでしょうか? それとも本文のテキスト部、リンク部など分けて格納しているのでしょうか? JavaScript部やコメント部等は確実に除去していると思いますが。 htmlのタグがあると文章解析は出来ないと思うので色々と除去していると思いますが、 その場合難しいのはどこが本文かは各サイトの構造によって違うことです。 人間が各サイトを解析して設定すれば出来るのでしょうが、Google位になると確実に現実的には不可能だと思います。 自分の想像力が足りないだけでしょうが、一体どのようにしてHTML文書を解析し次の段階(インデックス作成など)へ進むのか分かりません。 すみませんが教えて頂けないでしょうか? 関係ないとは思いますが、一応自分の環境だけは書いておきます。 centOS6 , PHP5.3などです。