ホームページ php教程 PHP开发 jQueryを使用してブラウザでXMLを処理する

jQueryを使用してブラウザでXMLを処理する

Dec 15, 2016 am 09:38 AM
XML処理

XML は Web の SGML ですが、XML コミュニティほど Web 上で目立つようにはなっていません。 Web における XML の最も著名な成果である XHTML は、政治や委員会の設計に巻き込まれており、XForms や SVG などの他の野心的で技術的に健全な仕様は、使用率の低さに悩まされています。 XML は、XML 形式の Web フィード (RSS タイプや Atom など) の人気など、予期せぬ方法で Web 上で成功することがあります。

よく使われる略語

Ajax: 非同期JavaScript + XML

API: アプリケーションプログラミングインターフェース

CSS: カスケードスタイルシート

DOM: ドキュメントオブジェクトモデル

HTML: ハイパーテキストマークアップ言語

RSS: Really Simple Agg規制

SGML: 標準汎用マークアップ言語

SVG: スケーラブル ベクター グラフィックス

URI: ユニフォーム リソース識別子

URL: ユニフォーム リソース ロケーター

W3C: World Wide Web コンソーシアム

XHTML: 拡張可能なハイパーテキスト マークアップ言語

XML: 拡張可能なマークアップ言語

Web 上の他のテクノロジーと同様、Web 上の XML はブラウザー中心ですが、Web 上の XML の処理に関するほとんどの議論はサーバー側に焦点を当てています。 「developerWorks Firefox と XML」シリーズでは、Firefox ブラウザーで XML を使用するいくつかの方法を説明します。残念ながら、ブラウザ間での XML の処理は、ブラウザ間での HTML の処理よりもさらに奇妙です。これが、Web 上の XML 処理の多くがサーバー側の比較的安全な領域に留まっている理由の 1 つです。

多くの動的 HTML 開発者は、ブラウザー間の苦痛や、ブラウザー間のスクリプト作成の癖にうんざりしています。いくつかの優れた JavaScript ライブラリの出現により、開発者の作業は容易になりました。これらのライブラリの中で最も人気のあるものの 1 つは jQuery で、developerWorks のいくつかの記事で取り上げられています。これらの大きな落とし穴を回避する方法を知っていれば、jQuery を使用して XML を処理することもできます。この記事では、現実世界のシナリオで jQuery と XML を一緒に使用する方法、Atom Web フィードの使用方法、jQuery で XML を処理するための実践的なパターンを紹介し、現実世界の不幸な問題を解決する方法を示します。 XML、XML 名前空間、HTML、JavaScript、および jQuery ライブラリについての基本的な理解が必要です。

XML 名前空間の問題

最初に最も深刻な問題について説明します。 jQuery は XML 名前空間の問題を完全には解決しません。このよく知られた問題は長い間存在しており、さまざまな解決策が試みられてきましたが、満足のいく結果は得られませんでした。理想的な解決策は、jQuery の CSS レベル 3 名前空間セレクターのサポートを活用することです。これにより、次のような新しいセレクターが追加されます:

@namespace ex url(http://example.com);
ex|quote {font-weight:太字}

最初の行は http://example.com 名前空間の接頭辞宣言で、2 行目は新しい名前空間コンポーネントを使用する型セレクターであり、宣言された接頭辞とローカル名で区切られています。 。残念ながら、jQuery はこのアプローチをサポートしていないため、名前空間の問題に対処するためにさまざまなアプローチが取られています。

プレフィックスの重要性

最も一般的なハックの 1 つは、jQuery で XML と名前空間を処理するときに名前空間を無視し、完全な qname (プレフィックスとローカル部分) を選択することです。

$(xml).find("x\:quote").each(function() {
//process each node
});

このコードは、jQueryのノード名の概念、つまりDOMのnodeNameを通じて選択します。属性。これには、jQuery セレクターの予約記号であるコロンが含まれており、バックスラッシュでエスケープする必要があります。バックスラッシュは JavaScript スクリプトの予約記号であり、ペアで指定する必要があります。このハックは、異なる接頭辞を使用する名前空間と同等のドキュメントでは機能しません。
属性フィルターの使用

一部の人々は、次の方法のバリエーション、つまり疑似属性ノード名に対して jQuery 属性フィルターを使用して成功したと言われています:

$(xml).find("[nodeName=x] :quote]") .each(function() {
//process each node
});

1.3.xより前のバージョンのjQueryを使用する場合は、nodeNameの前に@を追加する必要があります。ただし、これを行うと、前のセクション「プレフィックスのマスカレードの重要性」で説明したアプローチと同じ基本的な問題が発生します。これにより、多くの実際の名前空間シナリオが破壊されます。私は次のバリエーションを試してみましたが、これはより意味のあるものです:

$(xml).find("[namespaceURI='http://example.com'][localName='quote']")
.each(function () {
//process each node
});

残念ながら、これは機能しません。

良いプラグインを探しています

这种混乱不完全是 jQuery 的错。DOM 为寻找节点提供了有效的方法:getElementsByTagName 和 getElementsByTagNameNS。后者旨在感知名称空间,接受名称空间的 URI 并忽略前缀,但遗憾的是,尽管其他浏览器都支持它,但 Microsoft® Internet Explorer® 除外。然而,jQuery 的目的是处理此类浏览器问题,以便消除人们的此类烦恼。一种可能的、牵强的理由是,jQuery 很大程度上以 CSS 作为其选择器的基础,并且即使是 W3C CSS Level 3 名称空间选择器也无法使它通过工作草案阶段。jQuery bug #155,“Get Namespaced Elements in XML Documents”,涵盖了这些问题,但是问题在 3 年之内没有得到解决。

Ryan Kelly 遇到此问题并做了一次大胆的尝试,为 XML Namespace Selector 创建了一个 jQuery 插件 jquery.xmlns.js。它试图支持以下代码。

$.xmlns["ex"] = "http://example.com";
$(doc).find("ex|quote").each(...);

第一行是对该插件的全局名称空间声明 — 由于底层 jQuery 机制的局限性。它的确用典型的 jQuery 用语为名称空间范围提供一个非全局块。 遗憾的是,我在使用这种扩展时成败参半。我希望它能够改变,并最终找到合适的方法进入 jQuery 。

一个更简单的插件

我最终选择的解决方案是创建一个简单插件,它不使用 jQuery 选择器做任何特殊工作,而是添加一个新的过滤器。您可以直接传递一个名称空间和本地名称到该过滤器,从而使结果集与节点匹配。请您按以下方法使用它:

$(xml).find('*').ns_filter('http://example.com', 'quote').each(function(){
 .each(function() {
  //process each node
 });

ns_filter 是我写的特殊过滤器。执行一个单独的 find('*') 的需求看起来可能不优雅,更简单的变化可能是:

$(xml).find('quote').ns_filter('http://example.com').each(function(){
 .each(function() {
  //process each node
 });

然而,这样做并不可行,因为您不能相信 jQuery 能够以名称空间中立(即作为本地名称选择器)的方式来处理查询,例如 find('quote')。我的过滤器实现将在下一节提供,作为安装 jQuery 来处理 XML 的一般系统的一部分。我在 Mac OS X Snow Leopard 操作系统下的 Firefox 3.5.5 和 Safari 4.0.4 ,以及 Windows® XP 操作系统最新的 Internet Explore 7 和 Internet Explorer 8 浏览器中对它进行了测试。

jQuery XML 工作台

名称空间问题只是以下事实的症状:说到底,jQuery 是一个 HTML 工具。我发现,使用 jQuery 处理 XML 最实用的方式就是为 XML 文档创建一个 HTML 工作台,通过可靠地跨浏览器方法引用脚本,然后建立需要的暂时性解决方案,例如针对 XML 名称空间问题的解决方案。您可以用工作台模式准备并测试您基于浏览器的 XML 处理的模式和技术,您甚至还可以把工作台作为基于浏览器的应用程序本身的基础。

清单 1 (quotes.html)是 HTML 使用工作台的简单例子。它能够动态地从 XML 文件加载引用。

清单 1 (quotes.html). 使用 jQuery XML 工作台的 HTML 例子


    
        jQuery XML workbench
        
        
        
        
    
    
    
    

A few quotations for your enjoyment


    


    jQuery、ワークベンチ JavaScript、およびアプリケーション固有のスクリプトを自動的にロードするには、script 要素が必要です。 target_XML で使用される XML ファイルを識別するための link 要素も必要です。複数の XML ファイルを操作する必要がある場合は、ワークベンチのセットアップを簡単に拡張できます。リスト 2 (workbench.js) はワークベンチ スクリプトです。

    リスト 2 (workbench.js)。jQuery XML Workbench JavaScript

    /*
    workbench.js
    */
    // DOM の準備が完了すると呼び出される jQuery フック
    $(document).ready(function() {
    //ターゲットのXML ファイルの内容を取得(Ajax call)
    var fileurl = $("link[rel='target_XML']").attr('href');
    $.ajax({
    url: fileurl,
    ) type: "GET",
    dataType: "xml",
    complete: xml_ready,
    error: error_func
    });
    });

    // Ajax呼び出しでエラーが発生した場合のコールバック
    function error_func(result ) {
    alert(result.responseText);
    }

    //ns_filter、(this).filter(function() の jQuery 拡張機能。{
    var domnode =$(this)[0];
    return (domnode.namespaceURI = =namespaceURI &&domnode.localName ==localName);
    });
    };

    } )(jQuery);

    ワークベンチのコードには十分なコメントが付けられていますが、ここで注意すべき点がいくつかあります。名前空間フィルターはリストの最後の関数です。最初の関数は、ホームページ DOM が完全に準備された後に呼び出される通常の jQuery フックです。ターゲット XML の URL を取得し、Ajax を呼び出してファイルをロードします。 dataType: "xml" は、Ajax メカニズムに XML 応答ファイルを解析するよう指示することに注意してください。エラーが発生した場合は error_func コールバック関数を呼び出します。それ以外の場合は、アプリケーションの動作のためにユーザーが提供する xml_ready コールバック関数を呼び出します。このコールバック関数は、responseXML 属性を使用して XML を取得できる結果スキーマを使用します。リスト 3 (quotes.js) は、この場合のアプリケーション コードです。


    リスト 3. (quotes.js) 動的見積ビューアのアプリケーション コード

    /*

    quotes.js

    */

    function xml_ready(result){
    var データ挿入対象領域がクリア
    ').each(function (){
    var quote_text =$(this).text()

    $('

  1. ')
    .html(quote_text)
    .appendTo('#update -t​​arget ol');
    });//close each(

    }


    リスト 4 (quotes1.xml) は引用リストの XML ファイルです。

    リスト 4. (quotes1.xml) は引用リストの XML ファイルです

    棒や石は 私の骨を壊しますが、名前は決して私を傷つけません。

    知恵の始まりは、呼びかけることです。

    名前を聞くよりも顔を見る方が良いです :quotes>

    では、次の意味の x 接頭辞を使用していることに注意してください。理論的には、上記のプレフィックスベースのハックを試すこともできますが、そうすると壊れてしまいます。リスト 5 の引用ファイル (quotes2.xml) は、リスト 4 とまったく同じ名前空間であり、同じものです。正規の XML。

    リスト 5. (quotes2.xml) 引用リスト

    言葉には意味があり、名前には力がある

    棒や石は私の骨を壊しますが、名前には決して傷つけられません。知恵の始まりは、物事を正しい名前で呼ぶことです。

    名前を聞くよりも顔を見る方が良いです。

    如果您替代 清单 1 中的 quotes2.xml,您将发现它还起作用,这是一个针对名称空间的重要测试。图 1 是 quotes.html 的浏览器显示。

    图 1. 使用 jQuery XML 工作台展示的引用

    Atom XML 的动态显示

    一旦您开始在 jQuery 中进行 XML 处理,您就能够处理更多有用的 XML 格式,包括 Web 提要格式,例如 RSS 和 Atom。在此部分我将使用 jQuery XML 工作台来显示来自一个 Web 页面上 Atom 提要的最新条目。清单 6 是 HTML 页面。

    清单 6. (home.html)托管动态 XML 的 Web 页面


        
            jQuery XML workbench
            
            
            
            
        
        
        
        

    Caesar's home page


        

    GALLIA est omnis divisa in partes tres, quarum unam incolunt Belgae,
      aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli
      appellantur. Hi omnes lingua, institutis, legibus inter se differunt.
      

      

    Gallos ab Aquitanis Garumna flumen, a Belgis Matrona et Sequana dividit.
      

      

    Horum omnium fortissimi sunt Belgae, propterea quod a cultu atque
      humanitate provinciae longissime absunt, minimeque ad eos mercatores saepe
      commeant atque ea quae ad effeminandos animos pertinent important,
      proximique sunt Germanis, qui trans Rhenum incolunt, quibuscum continenter
      bellum gerunt. Qua de causa Helvetii quoque reliquos Gallos virtute
      praecedunt, quod fere cotidianis proeliis cum Germanis contendunt, cum aut 
      suis finibus eos prohibent aut ipsi in eorum finibus bellum gerunt.

        

    My Web feed


        


    クリア单 7(atom1.xml)は参照の Atom ファイルです。 1.0" encoding="utf-8"?>

    xml:lang="en"

    xml:base="http:/ /www.example.org">

    http://www.example.org/myfeed
    My Simple Feed
    2005-07- 15T12:00:00Z


    ウチェOgboji

    http://www.example.org/entries/1
    A simple blog entry

    2005-07-14T12:00:00Z
    <まとめ>これは 簡単なブログエントリーです


    http://www.example.org/entries/2
    <br> <link href="/ blog/2005/07/2" /><br> <updated>2005-07-15T12:00:00Z</updated><br> <まとめ>これは、タイトルなしの簡単なブログエントリーです</概要><br> </エントリ><br></フィード><br>クリア 8 は home.js であり、プラットフォームに追加されたアプリケーション プログラムのコードが含まれています。 * <br>home.js<br>*/<br>var ATOM_NS = 'http://www.w3.org/2005/Atom';<br></p>function xml_ready(result){<p> var xml = result.responseXML;</p> //Make sure theデータを挿入する対象の領域はクリア<p> $("#update-target").empty();<br> $(xml).find('*').ns_filter(ATOM_NS, 'entry').each(function(){ <br> var title_elem = $(this).find('*').ns_filter(ATOM_NS, 'title').clone();<br> var link_text = $(this).find('[rel="alternate"]') </p> .ns_filter(ATOM_NS, 'link')<p> .attr('href');<br> var summary_elem = $(this).find('*').ns_filter(ATOM_NS, 'summary').clone();<br><br> //欠落しているタイトルの場合を処理します<br> if (!title_elem.text()){<br> title_elem = '[No title]';<br> } <br><br> // rel='alternate'が省略されている場合を処理する<br> if (!link_text){</p> link_text = $(this).find('*')<p> .ns_filter(ATOM_NS, 'link')<br> .not('[rel]')<br> attr('href');<br> } </p> <p> //対象エリアを エントリ情報で更新<br> $('<p></p>')<br> .append(<br> $('<a href="' + link_text + '"> </a>')<br> .append(title_elem)<br> )<br> .append(' - ')</p> .append(summary_elem.clone())<p> .fadeIn('slow') //ボーナス アニメーション<br> .appendTo(' #update-target');<br> }); //close それぞれ(<br>}<br></p> <p>もう一度、このファイルにコメントしましたが、強調する価値のある点がいくつかあります。 Atom には許容可能な要素のバリエーションが多数あり、そのほとんどはオプションです。つまり、例外を処理する必要があります。一般的な例外として、必須リンクの rel="alternate" がオプションであることと、タイトルがオプションであることを 2 つ挙げます。ご覧のとおり、jQuery はこれらの状況に非常に柔軟に対応できるため、このような不規則な XML 形式でも処理できるはずです。場合によっては、構造を XML からメインドキュメント (ホストされた HTML) に直接コピーしました。これには十分な注意が必要です。 clone() メソッドを使用して、あるドキュメントから別のドキュメントにノードを接ぎ木しないようにしています。そうしないと、DOM 例外 WRONG_DOCUMENT_ERR が発行されます。さらに、追加されたコンテンツが徐々に表示から消えるように、jQuery メソッド fadeIn を使用しました。図2はhome.htmlのブラウザ表示です。 </p> <p> 上記は、ブラウザーで XML を処理するために jQuery を使用しています。その他の関連記事については、PHP 中国語 Web サイト (www.php.cn) に注目してください。 </p> <p><br></p> </div> </div> <div class="wzconShengming_sp"> <div class="bzsmdiv_sp">このウェブサイトの声明</div> <div>この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。</div> </div> </div> <ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5902227090019525" data-ad-slot="2507867629"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <div class="AI_ToolDetails_main4sR"> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-5902227090019525" data-ad-slot="3653428331" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> <!-- <div class="phpgenera_Details_mainR4"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hotarticle2.png" alt="" /> <h2>人気の記事</h2> </div> <div class="phpgenera_Details_mainR4_bottom"> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/1796780570.html" title="R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)" class="phpgenera_Details_mainR4_bottom_title">R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3週間前</span> <span>By 尊渡假赌尊渡假赌尊渡假赌</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/1796780641.html" title="R.E.P.O.最高のグラフィック設定" class="phpgenera_Details_mainR4_bottom_title">R.E.P.O.最高のグラフィック設定</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>2週間前</span> <span>By 尊渡假赌尊渡假赌尊渡假赌</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/1796785841.html" title="アサシンのクリードシャドウズ:シーシェルリドルソリューション" class="phpgenera_Details_mainR4_bottom_title">アサシンのクリードシャドウズ:シーシェルリドルソリューション</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>1週間前</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/1796780520.html" title="R.E.P.O.誰も聞こえない場合はオーディオを修正する方法" class="phpgenera_Details_mainR4_bottom_title">R.E.P.O.誰も聞こえない場合はオーディオを修正する方法</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3週間前</span> <span>By 尊渡假赌尊渡假赌尊渡假赌</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/1796785857.html" title="Atomfallのクレーンコントロールキーカードを見つける場所" class="phpgenera_Details_mainR4_bottom_title">Atomfallのクレーンコントロールキーカードを見つける場所</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>1週間前</span> <span>By DDD</span> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/ja/article.html">もっと見る</a> </div> </div> </div> --> <div class="phpgenera_Details_mainR3"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hottools2.png" alt="" /> <h2>ホットAIツール</h2> </div> <div class="phpgenera_Details_mainR3_bottom"> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ja/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411540686492.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undresser.AI Undress" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ja/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_title"> <h3>Undresser.AI Undress</h3> </a> <p>リアルなヌード写真を作成する AI 搭載アプリ</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ja/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411552797167.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="AI Clothes Remover" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ja/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_title"> <h3>AI Clothes Remover</h3> </a> <p>写真から衣服を削除するオンライン AI ツール。</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ja/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173410641626608.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undress AI Tool" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ja/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_title"> <h3>Undress AI Tool</h3> </a> <p>脱衣画像を無料で</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ja/ai/clothoffio" title="Clothoff.io" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411529149311.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Clothoff.io" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ja/ai/clothoffio" title="Clothoff.io" class="phpmain_tab2_mids_title"> <h3>Clothoff.io</h3> </a> <p>AI衣類リムーバー</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ja/ai/ai-hentai-generator" title="AI Hentai Generator" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/ai_manual/001/246/273/173405034393877.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="AI Hentai Generator" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ja/ai/ai-hentai-generator" title="AI Hentai Generator" class="phpmain_tab2_mids_title"> <h3>AI Hentai Generator</h3> </a> <p>AIヘンタイを無料で生成します。</p> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/ja/ai">もっと見る</a> </div> </div> </div> <script src="https://sw.php.cn/hezuo/cac1399ab368127f9b113b14eb3316d0.js" type="text/javascript"></script> <div class="phpgenera_Details_mainR4"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hotarticle2.png" alt="" /> <h2>人気の記事</h2> </div> <div class="phpgenera_Details_mainR4_bottom"> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/1796780570.html" title="R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)" class="phpgenera_Details_mainR4_bottom_title">R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3週間前</span> <span>By 尊渡假赌尊渡假赌尊渡假赌</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/1796780641.html" title="R.E.P.O.最高のグラフィック設定" class="phpgenera_Details_mainR4_bottom_title">R.E.P.O.最高のグラフィック設定</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>2週間前</span> <span>By 尊渡假赌尊渡假赌尊渡假赌</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/1796785841.html" title="アサシンのクリードシャドウズ:シーシェルリドルソリューション" class="phpgenera_Details_mainR4_bottom_title">アサシンのクリードシャドウズ:シーシェルリドルソリューション</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>1週間前</span> <span>By DDD</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/1796780520.html" title="R.E.P.O.誰も聞こえない場合はオーディオを修正する方法" class="phpgenera_Details_mainR4_bottom_title">R.E.P.O.誰も聞こえない場合はオーディオを修正する方法</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>3週間前</span> <span>By 尊渡假赌尊渡假赌尊渡假赌</span> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/1796785857.html" title="Atomfallのクレーンコントロールキーカードを見つける場所" class="phpgenera_Details_mainR4_bottom_title">Atomfallのクレーンコントロールキーカードを見つける場所</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <span>1週間前</span> <span>By DDD</span> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/ja/article.html">もっと見る</a> </div> </div> </div> <div class="phpgenera_Details_mainR3"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hottools2.png" alt="" /> <h2>ホットツール</h2> </div> <div class="phpgenera_Details_mainR3_bottom"> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ja/toolset/development-tools/92" title="メモ帳++7.3.1" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58ab96f0f39f7357.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="メモ帳++7.3.1" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ja/toolset/development-tools/92" title="メモ帳++7.3.1" class="phpmain_tab2_mids_title"> <h3>メモ帳++7.3.1</h3> </a> <p>使いやすく無料のコードエディター</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ja/toolset/development-tools/93" title="SublimeText3 中国語版" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58ab97a3baad9677.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="SublimeText3 中国語版" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ja/toolset/development-tools/93" title="SublimeText3 中国語版" class="phpmain_tab2_mids_title"> <h3>SublimeText3 中国語版</h3> </a> <p>中国語版、とても使いやすい</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ja/toolset/development-tools/121" title="ゼンドスタジオ 13.0.1" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58ab97ecd1ab2670.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="ゼンドスタジオ 13.0.1" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ja/toolset/development-tools/121" title="ゼンドスタジオ 13.0.1" class="phpmain_tab2_mids_title"> <h3>ゼンドスタジオ 13.0.1</h3> </a> <p>強力な PHP 統合開発環境</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ja/toolset/development-tools/469" title="ドリームウィーバー CS6" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58d0e0fc74683535.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="ドリームウィーバー CS6" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ja/toolset/development-tools/469" title="ドリームウィーバー CS6" class="phpmain_tab2_mids_title"> <h3>ドリームウィーバー CS6</h3> </a> <p>ビジュアル Web 開発ツール</p> </div> </div> <div class="phpmain_tab2_mids_top"> <a href="https://www.php.cn/ja/toolset/development-tools/500" title="SublimeText3 Mac版" class="phpmain_tab2_mids_top_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" class="lazy" data-src="https://img.php.cn/upload/manual/000/000/001/58d34035e2757995.png?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="SublimeText3 Mac版" /> </a> <div class="phpmain_tab2_mids_info"> <a href="https://www.php.cn/ja/toolset/development-tools/500" title="SublimeText3 Mac版" class="phpmain_tab2_mids_title"> <h3>SublimeText3 Mac版</h3> </a> <p>神レベルのコード編集ソフト(SublimeText3)</p> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/ja/ai">もっと見る</a> </div> </div> </div> <div class="phpgenera_Details_mainR4"> <div class="phpmain1_4R_readrank"> <div class="phpmain1_4R_readrank_top"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/hotarticle2.png" alt="" /> <h2>ホットトピック</h2> </div> <div class="phpgenera_Details_mainR4_bottom"> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/gmailyxdlrkzn" title="Gmailメールのログイン入り口はどこですか?" class="phpgenera_Details_mainR4_bottom_title">Gmailメールのログイン入り口はどこですか?</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>7415</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>15</span> </div> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/cakephp-tutor" title="CakePHP チュートリアル" class="phpgenera_Details_mainR4_bottom_title">CakePHP チュートリアル</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>1359</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>52</span> </div> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/steamdzhmcssmgs" title="Steamのアカウント名の形式は何ですか" class="phpgenera_Details_mainR4_bottom_title">Steamのアカウント名の形式は何ですか</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>76</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>11</span> </div> </div> </div> <div class="phpgenera_Details_mainR4_bottoms"> <a href="https://www.php.cn/ja/faq/winactivationkeyper" title="Win11 Activation Key Permanent" class="phpgenera_Details_mainR4_bottom_title">Win11 Activation Key Permanent</a> <div class="phpgenera_Details_mainR4_bottoms_info"> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/eyess.png" alt="" /> <span>23</span> </div> <div class="phpgenera_Details_mainR4_bottoms_infos"> <img src="/static/imghw/tiezi.png" alt="" /> <span>19</span> </div> </div> </div> </div> <div class="phpgenera_Details_mainR3_more"> <a href="https://www.php.cn/ja/faq/zt">もっと見る</a> </div> </div> </div> </div> </div> <div class="Article_Details_main2"> <div class="phpgenera_Details_mainL4"> <div class="phpmain1_2_top"> <a href="javascript:void(0);" class="phpmain1_2_top_title">Related knowledge<img src="/static/imghw/index2_title2.png" alt="" /></a> </div> <div class="phpgenera_Details_mainL4_info"> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ja/faq/682567.html" title="PowerPoint を使用して XML ファイルを開くことはできますか?" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/000/465/014/170834798786772.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="PowerPoint を使用して XML ファイルを開くことはできますか?" /> </a> <a href="https://www.php.cn/ja/faq/682567.html" title="PowerPoint を使用して XML ファイルを開くことはできますか?" class="phphistorical_Version2_mids_title">PowerPoint を使用して XML ファイルを開くことはできますか?</a> <span class="Articlelist_txts_time">Feb 19, 2024 pm 09:06 PM</span> <p class="Articlelist_txts_p">XML ファイルは PPT で開くことができますか? XML、Extensible Markup Language (Extensible Markup Language) は、データ交換とデータ ストレージで広く使用されている汎用マークアップ言語です。 HTML と比較して、XML はより柔軟であり、独自のタグとデータ構造を定義できるため、データの保存と交換がより便利で統一されます。 PPT (PowerPoint) は、プレゼンテーションを作成するために Microsoft によって開発されたソフトウェアです。包括的な方法を提供します。</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ja/faq/565216.html" title="XML 処理に Python 正規表現を使用する方法" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/000/465/014/168748408727586.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="XML 処理に Python 正規表現を使用する方法" /> </a> <a href="https://www.php.cn/ja/faq/565216.html" title="XML 処理に Python 正規表現を使用する方法" class="phphistorical_Version2_mids_title">XML 処理に Python 正規表現を使用する方法</a> <span class="Articlelist_txts_time">Jun 23, 2023 am 09:34 AM</span> <p class="Articlelist_txts_p">日常的なデータ処理シナリオでは、さまざまな形式でのデータ処理にはさまざまな解析方法が必要です。 XML 形式のデータの場合、Python の正規表現を使用して解析できます。この記事では、XML 処理に Python 正規表現を使用する基本的な考え方と方法を紹介します。 XML の基本の概要 XML (Extensible Markup Language) は、データを記述するために使用されるマークアップ言語であり、データを表現するための構造化された方法を提供します。 XML の重要な機能</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ja/faq/561441.html" title="PHP API開発でXMLおよびJSON形式のデータを処理する方法" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/000/465/014/168699776967583.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="PHP API開発でXMLおよびJSON形式のデータを処理する方法" /> </a> <a href="https://www.php.cn/ja/faq/561441.html" title="PHP API開発でXMLおよびJSON形式のデータを処理する方法" class="phphistorical_Version2_mids_title">PHP API開発でXMLおよびJSON形式のデータを処理する方法</a> <span class="Articlelist_txts_time">Jun 17, 2023 pm 06:29 PM</span> <p class="Articlelist_txts_p">最新のソフトウェア開発では、多くのアプリケーションが API (アプリケーション プログラミング インターフェイス) を介して対話する必要があり、異なるアプリケーション間でのデータ共有と通信が可能になります。 PHP 開発において、API は、PHP 開発者が他のシステムと統合し、さまざまなデータ形式を扱うことを可能にする一般的なテクノロジです。この記事では、PHPAPI 開発で XML および JSON 形式のデータを処理する方法について説明します。 XML 形式のデータ処理 XML (Extensible Markup Language) は、さまざまな分野で使用される一般的なデータ形式です。</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ja/faq/585520.html" title="完全なチュートリアル: PHP 拡張機能 SimpleXML を使用して XML データを処理する方法" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/000/465/014/169068418573889.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="完全なチュートリアル: PHP 拡張機能 SimpleXML を使用して XML データを処理する方法" /> </a> <a href="https://www.php.cn/ja/faq/585520.html" title="完全なチュートリアル: PHP 拡張機能 SimpleXML を使用して XML データを処理する方法" class="phphistorical_Version2_mids_title">完全なチュートリアル: PHP 拡張機能 SimpleXML を使用して XML データを処理する方法</a> <span class="Articlelist_txts_time">Jul 30, 2023 am 10:29 AM</span> <p class="Articlelist_txts_p">完全なチュートリアル: PHP 拡張機能 SimpleXML を使用して XML データを処理する方法 はじめに: Web 開発では、XML データの処理は一般的なタスクです。 PHP には多くの組み込み XML 処理ツールが用意されており、その中で最も一般的に使用されるのは SimpleXML 拡張機能です。 SimpleXML は、XML データを解析および操作するためのシンプルかつ直感的な方法を提供します。このチュートリアルでは、SimpleXML 拡張機能を使用して XML データを処理する方法 (XML の解析、ノードへのアクセスと変更、XML の変換など) を紹介します。</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ja/faq/1796788847.html" title="XML形式を確認する方法" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/202412/24/2024122414283488883.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="XML形式を確認する方法" /> </a> <a href="https://www.php.cn/ja/faq/1796788847.html" title="XML形式を確認する方法" class="phphistorical_Version2_mids_title">XML形式を確認する方法</a> <span class="Articlelist_txts_time">Apr 02, 2025 pm 10:00 PM</span> <p class="Articlelist_txts_p">XML形式の検証には、その構造とDTDまたはスキーマへのコンプライアンスを確認することが含まれます。 ElementTree(基本的な構文チェック)やLXML(より強力な検証、XSDサポート)など、XMLパーサーが必要です。検証プロセスでは、XMLファイルを解析し、XSDスキーマをロードし、AssertValidメソッドを実行してエラーが検出されたときに例外をスローすることが含まれます。 XML形式の確認には、さまざまな例外を処理し、XSDスキーマ言語に関する洞察を得る必要があります。</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ja/faq/629014.html" title="Java開発におけるXML処理技術の深い理解" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/000/465/014/170044148481155.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="Java開発におけるXML処理技術の深い理解" /> </a> <a href="https://www.php.cn/ja/faq/629014.html" title="Java開発におけるXML処理技術の深い理解" class="phphistorical_Version2_mids_title">Java開発におけるXML処理技術の深い理解</a> <span class="Articlelist_txts_time">Nov 20, 2023 am 08:51 AM</span> <p class="Articlelist_txts_p">Java 開発における XML 処理技術の深い理解 最新のソフトウェア開発では、XML (Extensible Markup Language) が非常に一般的なデータ交換および構成ファイル形式になっています。 Java は広く使用されているプログラミング言語として、XML ファイルを処理するための豊富な API とツールを提供します。この記事では、開発者が XML をよりよく理解して適用できるように、Java 開発における XML 処理テクニックについて詳しく説明します。 1. XML の基本概念 XML はデータを記述するためのマークアップ言語であり、マークアップを使用します。</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ja/faq/591111.html" title="Java で XML フォームを解析して処理するにはどうすればよいですか?" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/000/465/014/169175670817523.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="Java で XML フォームを解析して処理するにはどうすればよいですか?" /> </a> <a href="https://www.php.cn/ja/faq/591111.html" title="Java で XML フォームを解析して処理するにはどうすればよいですか?" class="phphistorical_Version2_mids_title">Java で XML フォームを解析して処理するにはどうすればよいですか?</a> <span class="Articlelist_txts_time">Aug 11, 2023 pm 08:25 PM</span> <p class="Articlelist_txts_p">Java で XML フォームを解析して処理するにはどうすればよいですか? XML (eXtensibleMarkupLanguage) は、一般的に使用されるデータ交換形式であり、さまざまなシナリオで広く使用されています。 XML の解析と処理は、Java プログラムの一般的なタスクです。この記事では、Java 言語を使用して XML フォームを解析および処理する方法を紹介し、対応するコード例を示します。まず、XML を解析して処理するために適切な XML ライブラリを選択する必要があります。 Java にはオープンソースの XM が多数あります</p> </div> <div class="phphistorical_Version2_mids"> <a href="https://www.php.cn/ja/faq/1796788776.html" title="XMLの変更にはプログラミングが必要ですか?" class="phphistorical_Version2_mids_img"> <img onerror="this.onerror=''; this.src='/static/imghw/default1.png'" src="/static/imghw/default1.png" class="lazy" data-src="https://img.php.cn/upload/article/202501/13/2025011318144919562.jpg?x-oss-process=image/resize,m_fill,h_207,w_330" alt="XMLの変更にはプログラミングが必要ですか?" /> </a> <a href="https://www.php.cn/ja/faq/1796788776.html" title="XMLの変更にはプログラミングが必要ですか?" class="phphistorical_Version2_mids_title">XMLの変更にはプログラミングが必要ですか?</a> <span class="Articlelist_txts_time">Apr 02, 2025 pm 06:51 PM</span> <p class="Articlelist_txts_p">XMLコンテンツを変更するには、ターゲットノードの正確な検出が必要であるため、プログラミングが必要です。プログラミング言語には、XMLを処理するための対応するライブラリがあり、APIを提供して、データベースの運用などの安全で効率的で制御可能な操作を実行します。</p> </div> </div> <a href="https://www.php.cn/ja/php-tutorials.html" class="phpgenera_Details_mainL4_botton"> <span>See all articles</span> <img src="/static/imghw/down_right.png" alt="" /> </a> </div> </div> </div> </main> <footer> <div class="footer"> <div class="footertop"> <img src="/static/imghw/logo.png" alt=""> <p>福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!</p> </div> <div class="footermid"> <a href="https://www.php.cn/ja/about/us.html">私たちについて</a> <a href="https://www.php.cn/ja/about/disclaimer.html">免責事項</a> <a href="https://www.php.cn/ja/update/article_0_1.html">Sitemap</a> </div> <div class="footerbottom"> <p> © php.cn All rights reserved </p> </div> </div> </footer> <input type="hidden" id="verifycode" value="/captcha.html"> <script>layui.use(['element', 'carousel'], function () {var element = layui.element;$ = layui.jquery;var carousel = layui.carousel;carousel.render({elem: '#test1', width: '100%', height: '330px', arrow: 'always'});$.getScript('/static/js/jquery.lazyload.min.js', function () {$("img").lazyload({placeholder: "/static/images/load.jpg", effect: "fadeIn", threshold: 200, skip_invisible: false});});});</script> <script src="/static/js/common_new.js"></script> <script type="text/javascript" src="/static/js/jquery.cookie.js?1744046001"></script> <script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script> <link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css?2' type='text/css' media='all' /> <script type='text/javascript' src='/static/js/viewer.min.js?1'></script> <script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script> <script type="text/javascript" src="/static/js/global.min.js?5.5.53"></script> <script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function () { var u = "https://tongji.php.cn/"; _paq.push(['setTrackerUrl', u + 'matomo.php']); _paq.push(['setSiteId', '9']); var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0]; g.async = true; g.src = u + 'matomo.js'; s.parentNode.insertBefore(g, s); })(); </script> <script> // top layui.use(function () { var util = layui.util; util.fixbar({ on: { mouseenter: function (type) { layer.tips(type, this, { tips: 4, fixed: true, }); }, mouseleave: function (type) { layer.closeAll("tips"); }, }, }); }); document.addEventListener("DOMContentLoaded", (event) => { // 定义一个函数来处理滚动链接的点击事件 function setupScrollLink(scrollLinkId, targetElementId) { const scrollLink = document.getElementById(scrollLinkId); const targetElement = document.getElementById(targetElementId); if (scrollLink && targetElement) { scrollLink.addEventListener("click", (e) => { e.preventDefault(); // 阻止默认链接行为 targetElement.scrollIntoView({ behavior: "smooth" }); // 平滑滚动到目标元素 }); } else { console.warn( `Either scroll link with ID '${scrollLinkId}' or target element with ID '${targetElementId}' not found.` ); } } // 使用该函数设置多个滚动链接 setupScrollLink("Article_Details_main1L2s_1", "article_main_title1"); setupScrollLink("Article_Details_main1L2s_2", "article_main_title2"); setupScrollLink("Article_Details_main1L2s_3", "article_main_title3"); setupScrollLink("Article_Details_main1L2s_4", "article_main_title4"); setupScrollLink("Article_Details_main1L2s_5", "article_main_title5"); setupScrollLink("Article_Details_main1L2s_6", "article_main_title6"); // 可以继续添加更多的滚动链接设置 }); window.addEventListener("scroll", function () { var fixedElement = document.getElementById("Article_Details_main1Lmain"); var scrollTop = window.scrollY || document.documentElement.scrollTop; // 兼容不同浏览器 var clientHeight = window.innerHeight || document.documentElement.clientHeight; // 视口高度 var scrollHeight = document.documentElement.scrollHeight; // 页面总高度 // 计算距离底部的距离 var distanceToBottom = scrollHeight - scrollTop - clientHeight; // 当距离底部小于或等于300px时,取消固定定位 if (distanceToBottom <= 980) { fixedElement.classList.remove("Article_Details_main1Lmain"); fixedElement.classList.add("Article_Details_main1Lmain_relative"); } else { // 否则,保持固定定位 fixedElement.classList.remove("Article_Details_main1Lmain_relative"); fixedElement.classList.add("Article_Details_main1Lmain"); } }); </script> </body> </html>