簡體   English   中英

根據用戶輸入創建XML元素

[英]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");

有什么方法可以使用上面的循環創建和添加元素。 如果沒有,我該怎么辦?

  1. 首先,您在檢查"END"字符串時遇到錯誤。 您應該使用String.equals而不是引用相等。 同樣,調用nextLine()兩次將讀取兩行而不是一行。 只需檢查第一讀行:

     while(bol.equals("END")); 
  2. 其次,使用JAXB執行此任務會容易得多。 每當用戶添加新輸入時,就在內存中添加新對象,這與手動處理文檔樹相反。 收到"END" ,內容將作為文檔編組。

    您可以在Oracle教程中閱讀JAXB簡介。

  3. 如果仍然要使用標准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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM