1

私は、編集を容易にするためにXMLファイルを2つの部分に分割するという任務を負っています。

ただし、既存のコードベースはすべて、単一のファイルとして扱うように設計されています。

中間点として(時間の不足のため)、ファイルを分割することにしましたが、次のコードを使用して分割されたファイルを単純に連結します

    var xmlDoc;
    xmlhttp.open("GET","distributome-relations.xml",false);
    xmlhttp.send();
    xmlDoc = xmlhttp.responseXML;
    xmlhttp=createAjaxRequest();
    xmlhttp.open("GET","distributome-references.xml",false);
    xmlhttp.send();
    xmlDoc = xmlDoc+xmlhttp.responseXML;
            try{
        DistributomeXML_Objects=xmlDoc.documentElement.childNodes;
    }catch(error){
        DistributomeXML_Objects=xmlDoc.childNodes;
    }

元のコードでは機能しないようです

xmlhttp.open("GET","Distributome.xml",false);
    xmlhttp.send();
    if (!xmlhttp.responseXML.documentElement && xmlhttp.responseStream)
        xmlhttp.responseXML.load(xmlhttp.responseStream);
    xmlDoc = xmlhttp.responseXML;
    try{
        DistributomeXML_Objects=xmlDoc.documentElement.childNodes;
    }catch(error){
        DistributomeXML_Objects=xmlDoc.childNodes;
    }

完全に正常に動作します。

これをどのように進めるかわかりません。

ファイルを分割しただけです

http://www.distributome.avinashc.com/avinash/Distributome.xml into

http://www.distributome.avinashc.com/avinash/distributome-relations.xmlおよび http://www.distributome.avinashc.com/avinash/distributome-references.xml

最後の2つのファイルは、2つのファイルの単純な連結のみが有効なXMLドキュメントであると想定されるため、不適切にフォーマットされたように見えます。

これはresponseXMLメソッドの使用によるものであり、別のメソッドを使用する必要があると思われます。

これを行うためのより良い方法はありますか?私はどんな提案も歓迎します、そしてもちろん-私の最初の質問への答え。

ありがとう

4

1 に答える 1

1

何が変換されるかを説明すると役立ちますdoesn't seem to workが、コードをざっと見てみると、を使用して2つのオブジェクトを連結しようとしてDOM Document+いることがわかります。この行:

xmlDoc = xmlDoc + xmlhttp.responseXML;

XHRのresponseXMLプロパティは、期待どおりの文字列を返しません(ところで、そのような2つのXMLファイルを連結すると、とにかく整形式ではないXMLになる可能性が非常に高くなります)。2番目の例では、それが何であるか、つまりDOMDocumentオブジェクトに対して適切に処理します。

詳細についてresponseXML は、MDNをご覧ください。サーバーがヘッダーを適切に設定しなかった場合にサーバーからXMLを受信したと見なすために、XHRでContent-Typeを使用する必要がある可能性があることに関する注意に注意してください。overrideMimeType()

XML対応の方法で連結を行うには、2番目のドキュメント()からルートノードを取得し、document.documentElementを使用して最初のドキュメントにインポートしてから、使用importNode()する子ノードとして追加する必要があります。appendChild()

于 2012-05-22T03:21:18.857 に答える