[英]Create XML elements from user input
我正在嘗試從控制台獲取用戶輸入並將其輸入到XML文件中。 Evrytime用戶進入下一行時,我要使用他們鍵入的字符串並創建一個新元素。 這是我要實現的目標:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<note>
<header>
<Tempo Laya="2"/>
</header>
<Notes>
<n1 Bol="Text the user entered"/>
<n2 Bol="Text the user entered over the next iteration"/>
<n3 Bol="Text the user entered over the next iteration"/>
</Notes>
</note>
我認為最好的方法就是創建這些元素。 我無法通過此方法創建唯一的元素名稱。 到目前為止,這是我的代碼:
//Create note element
Element notes = doc.createElement("Notes");
rootElement.appendChild(notes);
System.out.println("Input your notes matraa by maatra. To proceed to the next maatra press ENTER. \n To exit enter END");
do{
int noteCount = 1;
System.out.println("Maatra: ");
bol = scanner.nextLine();
}while(scanner.nextLine()!= "END");
有什么方法可以使用上面的循環創建和添加元素。 如果沒有,我該怎么辦?
首先,您在檢查"END"
字符串時遇到錯誤。 您應該使用String.equals
而不是引用相等。 同樣,調用nextLine()
兩次將讀取兩行而不是一行。 只需檢查第一讀行:
while(bol.equals("END"));
其次,使用JAXB執行此任務會容易得多。 每當用戶添加新輸入時,就在內存中添加新對象,這與手動處理文檔樹相反。 收到"END"
,內容將作為文檔編組。
您可以在Oracle教程中閱讀JAXB簡介。
如果仍然要使用標准DOM來執行此操作,則需要執行以下操作:
Element noteElement = doc.createElement("note"); notes.appendChild(noteElement);
這意味着,正如下面的@Andreas所評論的,理想情況下,元素應具有相同的名稱,而不是按順序編號(n1,n2,n3,...)。 如果確實需要編號,則可以添加另一個包含id的屬性(使用類似於createElement
Document
createAttribute
方法)。
我建議您創建一個對象“ Note”並使用JAXB。 請參閱本教程: 教程 。 將對象轉換為XML以及將XML轉換為對象很容易。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.