2011-06-29 5 views
0

電子メールの種類に応じてテキストボックスに電子メールの値を解析する方法を教えてください。私は私のテキストボックスに電子メールの値を解析するいくつかの助けが必要です。XULのJavaScriptでXMLファイルの解析から親ノードのサブファイルの値を取得する方法

<CONTACT> 
<PDE-Identity>N65567</PDE-Identity> 
<FirstName>Rangarajkarthik</FirstName> 
<LastName>karthik Rangaraj</LastName> 
<Facebook-ID/> 
<EMAIL> 
<Type>gmail</Type> 
<Value>[email protected]</Value> 
<Type>yahoo</Type> 
<Value>[email protected]</Value> 
</EMAIL> 
</CONTACT> 

ループを使用してXULのテキストボックスにtypeの値を解析するにはどうすればよいですか?一部の連絡先ノードにはGmailはなく、一部の連絡先ノードにはYahooのメールアドレスはありません。

var str=x[i].getElementsByTagName("Value")[0].childNodes[0].nodeValue; 
document.getElementById("gmail").value=str; 

それは働いていない:私はこれは私がこれまで持っているものである

<row> 
    <label value="Gmail"/> 
    <textbox id="gmail" value=""/> 
</row> 
<row> 
    <label value="Yahoo"/> 
    <textbox id="yahoo" value=""/> 
</row> 

...ここは本当に混乱しています。

XULコード:

<?xml version="1.0"?> 
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> 
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" oncommand="init();"> 

    <grid> 
    <columns> 
     <column flex="1"/> 
     <column flex="4"/> 
     <column flex="4"/> 
     <column flex="4"/> 
     <column flex="4"/> 
    </columns> 

    <rows> 
     <row> 
<label control="" value="Select PDE-ID:"/> 
<menulist id="List" oncomman=""> 
       <menupopup id="Popup"> 
       </menupopup> 
</menulist> 

     </row> 
    </rows> 
</grid> 

<label control="" accesskey="" value=""/> 
    <grid> 
    <columns> 
     <column flex="1"/> 
     <column flex="4"/> 
     <column flex="4"/> 
     <column flex="4"/> 
<column flex="4"/> 
    </columns> 

    <rows> 
     <row> 
     <label value="PDE-Identity"/> 
     <textbox id="pde" value=""/> 
     </row> 
     <row> 
     <label value="FirstName"/> 
     <textbox id="fname" value=""/> 
     </row> 
     <row> 
     <label value="LastName"/> 
     <textbox id="lname" value=""/> 
     </row> 
     <row> 
      <label value="Gmail"/> 
     <textbox id="gmail" value=""/> 
     </row> 
     <row> 
      <label value="Yahoo"/> 
     <textbox id="yahoo" value=""/> 
     </row> 
     <row> 
      <label value="Alcatel-Lucent"/> 
     <textbox id="alcatel-lucent" value="" /> 
     </row> 
     <row> 
      <label value="URL"/> 
     <textbox id="facebook" value="" /> 
     </row> 
     <row> 
      <label value="Facebook-ID"/> 
     <textbox id="fid" value="" /> 
     </row> 
    </rows> 
    </grid> 
<label value=""/> 
<grid> 
    <columns> 
     <column flex=""/> 
    <hbox align="center" > 
     <button id="save" label="next" oncommand="next()" /> 
     <button id="cancel" label="previous" oncommand="previous()"/> 
     <button id="delete" label="Merge" oncommand="delete();"/>   
    </hbox> 
</columns> 
</grid> 


<separator/> 
<text value="© 2011"/> 
<separator/> 


<script type="application/x-javascript"> 
<![CDATA[ 




var objXMLDoc = document.implementation.createDocument('','doc',null); 
var objXMLHTTP = new XMLHttpRequest(); 

objXMLHTTP.open("GET", "file://D:/xmlparserinxul/final.xml", false); 
objXMLHTTP.send(null); 
objXMLDoc = objXMLHTTP.responseXML; 

var objNodeList = objXMLDoc.getElementsByTagName("PDE-Identity"); 
    for (var i=0; i<objNodeList.length; i++){ 
      var menuPopup=document.getElementById('Popup');    
        var menu1=document.createElement("menuitem"); 
         menu1.setAttribute("label",'objNodeList'); 
         menuPopup.appendChild(menu1); 
} 


var x = objXMLDoc.getElementsByTagName("CONTACT"); 
i=0; 

function init() 
{ 

var str=x[i].getElementsByTagName("PDE-Identity")[0].childNodes[0].nodeValue; 
document.getElementById("pde").value=str; 

var str=x[i].getElementsByTagName("FirstName")[0].childNodes[0].nodeValue; 
document.getElementById("fname").value=str; 

var str=x[i].getElementsByTagName("LastName")[0].childNodes[0].nodeValue; 
document.getElementById("lname").value=str; 

/*var str=x[i].getElementsByTagName("Type")[0].childNodes[0].nodeValue; 
document.getElementById("gmail").value=str; 

var str=x[i].getElementsByTagName("Type")[0].childNodes[0].nodeValue; 
document.getElementById("yahoo").value=str; 

var str=x[i].getElementsByTagName("Type")[0].childNodes[0].nodeValue; 
document.getElementById("alcatel-lucent").value=str; */ 

var str=x[i].getElementsByTagName("URL")[0].childNodes[0].nodeValue; 
document.getElementById("facebook").value=str; 

var str=x[i].getElementsByTagName("Facebook-ID")[0].childNodes[0].nodeValue; 
document.getElementById("fid").value=str; 

} 

function next() 
{ 

document.getElementById('facebook').value=''; 
document.getElementById('fid').value=''; 
//alert('fool'); 
if (i<x.length-1) 
    { 
    i++; 
    init(); 

    } 
} 

function previous() 
{ 

document.getElementById('facebook').value=''; 
document.getElementById('fid').value=''; 

if (i>0) 
    { 

    i--; 
    init(); 

    } 
} 


]]> 
</script> 

</window> 

私のXMLファイル:

<?xml version="1.0" encoding="UTF-8"?> 
<CONTACTS> 
<CONTACT> 
<PDE-Identity>N65539</PDE-Identity> 
<FirstName>Arun_niit</FirstName> 
<LastName>Arun_niit</LastName> 
<Facebook-ID/> 
<EMAIL> 
<Type>yahoo</Type> 
<Value>[email protected]</Value> 
</EMAIL> 
</CONTACT> 
<CONTACT> 
<PDE-Identity>N65546</PDE-Identity> 
<FirstName>FodenBen'</FirstName> 
<LastName>Ben' Foden</LastName> 
<URL>http://www.facebook.com/profile.php?id=100002440474277</URL> 
<Facebook-ID>100002440474277</Facebook-ID> 
<EMAIL/> 
</CONTACT> 
<CONTACT> 
<PDE-Identity>N65553</PDE-Identity> 
<FirstName>GhorbelMahmoud</FirstName> 
<LastName>Mahmoud Ghorbel</LastName> 
<Facebook-ID/> 
<EMAIL> 
<Type>alcatel-lucent</Type> 
<Value>[email protected]</Value> 
</EMAIL> 
</CONTACT> 
<CONTACT> 
<PDE-Identity>N65560</PDE-Identity> 
<FirstName>keyankarthik</FirstName> 
<LastName>karthik keyan</LastName> 
<Facebook-ID/> 
<EMAIL> 
<Type>yahoo</Type> 
<Value>[email protected]</Value> 
</EMAIL> 
</CONTACT> 
<CONTACT> 
<PDE-Identity>N65567</PDE-Identity> 
<FirstName>Rangarajkarthik</FirstName> 
<LastName>karthik Rangaraj</LastName> 
<Facebook-ID/> 
<EMAIL> 
<Type>gmail</Type> 
<Value>[email protected]</Value> 
<Type>yahoo</Type> 
<Value>[email protected]</Value> 
</EMAIL> 
</CONTACT> 
<CONTACT> 
<PDE-Identity>N65576</PDE-Identity> 
<FirstName>ReddyAkky</FirstName> 
<LastName>Akky Reddy</LastName> 
<Facebook-ID/> 
<EMAIL> 
<Type>gmail</Type> 
<Value>[email protected]</Value> 
</EMAIL> 
</CONTACT> 
<CONTACT> 
<PDE-Identity>N65583</PDE-Identity> 
<FirstName>SandfordFrankie</FirstName> 
<LastName>Frankie Sandford</LastName> 
<URL>http://www.facebook.com/FrankieSandfordApprovedPage</URL> 
<Facebook-ID/> 
<EMAIL/> 
</CONTACT> 
<CONTACT> 
<PDE-Identity>N65590</PDE-Identity> 
<FirstName>TheSatsRochelle</FirstName> 
<LastName>Rochelle TheSats</LastName> 
<URL>http://www.facebook.com/profile.php?id=100002487211054</URL> 
<Facebook-ID>100002487211054</Facebook-ID> 
<EMAIL/> 
</CONTACT> 
<CONTACT> 
<PDE-Identity>N65597</PDE-Identity> 
<FirstName>KumarVeera</FirstName> 
<LastName>Vea_Kumar</LastName> 
<Facebook-ID/> 
<EMAIL> 
<Type>yahoo</Type> 
<Value>[email protected]</Value> 
</EMAIL> 
</CONTACT> 
</CONTACTS> 
+1

ほんの少しの発言:あなたのXMLファイルの本当の内容をそのまま投稿するべきではないかもしれません。私はとても幸せではないので、Webに投稿された自分のメールアドレスを見つけてください... – revers

+0

メールアドレスが変更されます。私は誰かが私を助けることを願って.... – user838691

答えて

1

私はあなたがXULとXML形式を混合していると思います。 XULはXMLユーザーインターフェイス言語です。つまり、XML形式の使用インターフェイスを記述しています。
getElementsByTagNameおよびgetElementById関数は、XUL要素、つまりUI要素にIDまたはタグ名でアクセスすることを目的としています。
は、これらの機能を使用してXMLデータを変更することはできません。 javacriptでXMLデータを処理するには、E4Xを使用する必要があります。素晴らしいチュートリアルhereを見つけることができます。あなたは、あなたが必要とするものを解決する必要があります。ところで


、XMLデータ内の2人の兄弟ノードの順序は重要ではないので、私は、各電子メールアドレスは、電子メールの値と型を含む親ノードを作成するために、あなたをお勧めします:

<EMAILS> 
    <EMAIL> 
    <Type>gmail</Type> 
    <Value>[email protected]</Value> 
    </EMAIL> 
    <EMAIL>  
    <Type>yahoo</Type> 
    <Value>[email protected]</Value> 
    </EMAIL> 
</EMAILS> 
関連する問題