実現したいこと
javascriptを使用してxmlを読み取りhtmlで表示したい。
発生している問題・分からないこと
AMaxタグだけ表示できずにN/Aになる。
エラーメッセージ
error
1UpdateTimeTags length: 1 2test.html:130 AMaxTags length: 0 3test.html:131 NameTags length: 1 4test.html:144 aMax for index 0: N/A
該当のソースコード
javascript
1<script> 2async function fetchAndParseXML() { 3 const xmlUrl = 'updateData3.xml'; // XMLファイルのパス 4 try { 5 const response = await fetch(xmlUrl); 6 const xmlText = await response.text(); 7 const parser = new DOMParser(); 8 const xmlDoc = parser.parseFromString(xmlText, "application/xml"); 9 10 const updateTimeTags = xmlDoc.getElementsByTagName("UpdateTime"); 11 const AMaxTags = xmlDoc.getElementsByTagName("AMax"); 12 const nameTags = xmlDoc.getElementsByTagName("Name"); // Nameタグのデータを取得 13 14 console.log("UpdateTimeTags length:", updateTimeTags.length); // ログ出力を追加 15 console.log("AMaxTags length:", AMaxTags.length); // ログ出力を追加 16 console.log("NameTags length:", nameTags.length); // ログ出力を追加 17 18 // 最初のUpdateTimeの内容だけを表示 19 if (updateTimeTags.length > 0 && nameTags.length > 0) { 20 document.getElementById("first-getDate").textContent = updateTimeTags[0].textContent; 21 } 22 23 let displayHtml = ""; 24 for(let i = 0; i < updateTimeTags.length; i++) { 25 const date = updateTimeTags[i].textContent; 26 const aMax = AMaxTags[i] ? AMaxTags[i].textContent : 'N/A'; 27 28 // ここでaMaxの値をログ出力します。 29 console.log(`aMax for index ${i}:`, aMax); // ログ出力を追加 30 31 const name = i < nameTags.length ? nameTags[i].textContent : 'N/A'; 32 // 数値部分だけを解析するためparseFloatを使う 33 const aMaxValue = parseFloat(aMax); 34 let className = ""; 35 36 if (aMaxValue >= 0.3) { 37 className = "red"; 38 } else if (aMaxValue >= 0.2) { 39 className = "blue"; 40 } else if (aMaxValue >= 0.1) { 41 className = "yellow"; 42 } 43 44 displayHtml += ` 45 <div class="data-box"> 46 <div class="channel-name">${name}</div> 47 <div class="square-frame ${className}"></div> 48 <div class="a-max">${aMax}</div> <!-- 元のAMaxの文字列を表示 --> 49 </div>`; 50 } 51 52 document.getElementById("data-container").innerHTML = displayHtml; 53 } catch (error) { 54 console.error("Error fetching XML: ", error); 55 } 56} 57 58document.addEventListener('DOMContentLoaded', (event) => { 59 fetchAndParseXML(); 60}); 61</script>
xml
1<clsViewData> 2 <Name>わに</Name> 3 <UpdateTime>2021/05/20 04:56:47</UpdateTime> 4 <SelectItem>AMax</SekectItem> 5 <AMax>0.000 (dB)</AMax> 6 </clsViewData>
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
何度検証してもAMaxは存在しない扱いになりました。
それ以外のタグはちゃんと表示されます。
補足
特になし
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/03/20 14:37
2024/03/20 14:40