2017-04-11 16 views
0

から子ノードになっては)私が(次のXMLHttpRequestを持っていると仮定しresponseText var responseに保存されている:。その後Javascriptを:XMLDocumentの

{"success":true,"error":null,"body":"<modules>\n <total>5<\/total>\n <status>\n <id>0<\/id>\n <name>Archon<\/name>\n <portCount>14<\/portCount>\n <attached>true<\/attached>\n <\/status>\n <status>\n <id>1<\/id>\n <name>PC4<\/name>\n <portCount>0<\/portCount>\n <attached>false<\/attached>\n <\/status>\n <status>\n <id>2<\/id>\n <name>APC<\/name>\n <portCount>0<\/portCount>\n <attached>false<\/attached>\n <\/status>\n <status>\n <id>3<\/id>\n <name>SL1<\/name>\n <portCount>0<\/portCount>\n <attached>false<\/attached>\n <\/status>\n <status>\n <id>4<\/id>\n <name>SW5-1<\/name>\n <portCount>0<\/portCount>\n <attached>false<\/attached>\n <\/status>\n <status>\n <id>5<\/id>\n <name>ALC<\/name>\n <portCount>0<\/portCount>\n <attached>false<\/attached>\n <\/status>\n <status>\n <id>65<\/id>\n <name>VirtualModule<\/name>\n <portCount>16<\/portCount>\n <attached>true<\/attached>\n <\/status>\n<\/modules>\n"} 

、私は体を抽出するために、次のでした

var json = JSON.parse(response); 
var xml = json.body; 

var xmlのオブジェクトは文字列なので、XMLDocumentに解析しようとしました:

ここでの問題は、子ノードに到達する方法がわかりません。私は(5であるべき)の合計の値を取得するには、次の試してみました:

console.log(xmlDoc.getElementsByTagName("modules")[0].childNodes[0].nodeValue); 

をしかし、私は取得していますすべてが空白の文字列です。私はこれが非常にシンプルでなければならないと感じていますが、私はそれを得ていません。いろいろな名前タグの値を取得したいと思うと、私はもっと無知です。

子ノードの値を取得するにはどうすればよいですか?

+0

空の文字列が得られていません。 '... nodeValue.toString()[0] .charCodeAt(0)= 10'はキャリッジリターンで、空ではありません。 – jrook

+0

@jrookありがとう!これにより、ノードをたどることができます。ノード値を取得する方法はありますか?私は、 'var total = xmlDoc.children [0] .children [0];'が子ノードであることを理解していますが、その値をどうやって得るのですか? – LChaos2

+0

nodeValueを使うと? '.children [0] .childNodes [0] .nodeValue =" 5 "' – jrook

答えて

1

文字列が空ではありません。

console.log(xmlDoc.getElementsByTagName("modules")[0].childNodes[0].nodeValue.charCodeAt(0)); 

10 

これは、キャリッジリターンのASCIIコードです。 childNodeschildrenについては、hereをご覧ください。 xmlDoc.childrenは、情報をトラバースして抽出できるHTMLコレクションを提供します。

注::質問のタイトルを編集して、将来見る可能性のある人に役立ててください。

0

以下のコードを試してください。

var response = {"success":true,"error":null,"body":"<modules>\n <total>5<\/total>\n <status>\n <id>0<\/id>\n <name>Archon<\/name>\n <portCount>14<\/portCount>\n <attached>true<\/attached>\n <\/status>\n <status>\n <id>1<\/id>\n <name>PC4<\/name>\n <portCount>0<\/portCount>\n <attached>false<\/attached>\n <\/status>\n <status>\n <id>2<\/id>\n <name>APC<\/name>\n <portCount>0<\/portCount>\n <attached>false<\/attached>\n <\/status>\n <status>\n <id>3<\/id>\n <name>SL1<\/name>\n <portCount>0<\/portCount>\n <attached>false<\/attached>\n <\/status>\n <status>\n <id>4<\/id>\n <name>SW5-1<\/name>\n <portCount>0<\/portCount>\n <attached>false<\/attached>\n <\/status>\n <status>\n <id>5<\/id>\n <name>ALC<\/name>\n <portCount>0<\/portCount>\n <attached>false<\/attached>\n <\/status>\n <status>\n <id>65<\/id>\n <name>VirtualModule<\/name>\n <portCount>16<\/portCount>\n <attached>true<\/attached>\n <\/status>\n<\/modules>\n"}; 
 

 
var xml = response.body; 
 

 
var xmlDoc = new DOMParser().parseFromString(xml, 'text/xml'); 
 

 
var allChildNodes = xmlDoc.documentElement.childNodes; 
 

 
var total = allChildNodes[1].textContent; 
 

 
alert(total);

関連する問題