そのため、特定の ID の要素を取得し、その内容を設定することによって、入力したい XHTML ドキュメント レポート スケルトンがあります。
getElementById() を試してみたところ、null が返されました (わかったとおり、id は暗黙的に「id」ではなく、スキーマで宣言する必要があるためです)。
panel.setDocument(Main.class.getResource("/halreportview/DefaultSiteDetails.html").toString());
panel = populateDefaultReport(panel);
Element header1 = panel.getDocument().getElementById("header1");
header1.setTextContent("<span class=\"b\">Instruction Type:</span> Example<br/><span class=\"b\">Allocated To:</span> "+employee.toString()+"<br/><span class=\"b\">Scheduled Date:</span> "+dateFormat.format(scheduledDate));
そこで、XHTML ドキュメントを検証する必要がないように、いくつかの回避策を試しました。問題のファイルの先頭に次のように簡単な DTD を追加してみました。
<?xml version="1.0"?>
<!DOCTYPE foo [<!ATTLIST bar id ID #IMPLIED>]>
しかし、getElementById() はまだ null を返しました。xml:id
そのため、サポートされていることを期待して XHTML ドキュメントで id の代わりに使用しようとしましたが、やはりうまくいきませんでした。その代わりに、getElementsByTagName() を使用して、ID をチェックする結果をループしようとしました。これは機能し、正しい要素が見つかりました (「見つかりました」という出力で確認されます) が、この要素で setTextContent を呼び出そうとすると、まだ NullPointException が発生します。以下のコード。
Element header1;
NodeList sections = panel.getDocument().getElementsByTagName("p");
for (int i = 0; i < sections.getLength(); ++i) {
if (((Element)sections.item(i)).getAttribute("id").equals("header1")) {
System.out.println("Found it");
header1 = (Element) sections.item(i);
header1.setTextContent("<span class=\"b\">Instruction Type:</span> Example<br/><span class=\"b\">Allocated To:</span> "+employee.toString()+"<br/><span class=\"b\">Scheduled Date:</span> "+dateFormat.format(scheduledDate));
}
}
私はこれについて私の心を失っています。これがどのように機能するかについて、何らかの根本的な誤解に苦しんでいるに違いありません。何か案は?
編集; CSS を削除した、以下の XHTML ファイルからの抜粋。
<html>
<head>
<title>Site Details</title>
<style type="text/css">
</style>
</head>
<body>
<div class="header">
<p></p>
<img src="#" alt="Logo" height="81" width="69"/>
<p id="header1"><span class="b">Instruction Type:</span> Example<br/><span class="b">Allocated To:</span> Example<br/><span class="b">Scheduled Date:</span> Example</p>
</div>
</body>
</html>