0

そのため、特定の 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>
4

1 に答える 1