2012-01-20 15 views
2

XPathでJavaScriptで作成したXML文書にアクセスする必要があります。サーバーから(XMLHttpRequest経由で)XMLファイルをロードするとうまくいきますが、ローカルのXMLドキュメントからXMLドキュメント参照を使用すると、Chromeは何も表示しませんでした。ここGoogle ChromeのXPathバグ?

例コードのビット:

<!DOCTYPE html> 
<html> 
<head> 
<title>Title of the document</title> 
</head> 
<body> 
<script type="text/javascript"> 
     var xml = document.implementation.createDocument("", "", null); 

     var root = xml.createElement("root"); 

     var level1 = xml.createElement("L1"); 
     var level2 = xml.createElement("L2"); 
     L2txt = xml.createTextNode("here is L2"); 

     level2.appendChild(L2txt); 
     level1.appendChild(level2); 

     var level2 = xml.createElement("L2"); 
     level2.setAttribute("id", "myId"); 
     L2txt = xml.createTextNode("here is L2 with id"); 

     level2.appendChild(L2txt); 
     level1.appendChild(level2); 
     root.appendChild(level1); 

     path="//L2[@id='myId']"; 

     var nodes=xml.evaluate(path, root, null, XPathResult.ANY_TYPE, null); 
     var result=nodes.iterateNext(); 

     while (result) { 
      document.write(result.textContent); 
      document.write("<br />"); 
      result=nodes.iterateNext(); 
     } 
</script> 
</body> 
</html> 

コード出力が "ここで、IDとL2である" べきです。

FF 9.0.1とChrome 16.0.912.75を使用すると、開発ツールにエラーやヒントが表示されません。

今は本当に知りませんが、それはChromeのバグですか、Firefoxの「特別な」機能ですか。そして、一番importent - Firefoxのように振る舞うためにChromeをどのように持ち込むことができますか?あるいは、ローカルに作成されたXML文書でXPathを使用する方法をもう一つ考えていますか?

ありがとうございます事前にありがとうございます

答えて

1

あなたのサンプルコードには小さな問題があります。

root要素は、XML文書(xml変数)には追加されません。

したがって、xmlドキュメントオブジェクトにルート要素がなく、したがって検索するコンテンツがないため、XPath検索は機能しません。追加してみてください:この後

xml.appendChild(root); 

を:Chromeで私のために問題を修正

var root = xml.createElement("root"); 

を。

+1

うわー、ありがとう、どうしてこんなに寂しかったのか分からないけど、Firefoxも古いバージョンを受け入れてくれた。Chromeはとても正しいと思われる;-) – guitar1

関連する問題