从用户输入

时间:2016-02-28 15:52:20

标签: java xml string dom nsxmlelement

我正在尝试从控制台获取用户输入并将其输入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");

有没有办法使用上面的循环创建和追加元素。如果不是我怎么能这样做?

2 个答案:

答案 0 :(得分:4)

  1. 首先,检查"END"字符串时出现错误。您应该使用String.equals而不是引用相等。同时调用nextLine()两次读取两行而不是一行。只需检查第一条读取线:

    while(bol.equals("END"));
    
  2. 其次,使用JAXB执行此任务会更容易。每当用户添加新输入时,您都会在内存中添加新对象,而不是手动处理文档树。收到"END"后,内容将作为文档进行编组。

    您可以在Oracle tutorials

  3. 中阅读JAXB简介
  4. 如果您仍想使用标准DOM执行此操作,则需要执行以下操作:

    Element noteElement = doc.createElement("note");
    notes.appendChild(noteElement);
    

    这意味着,正如@Andreas在下面评论的那样,元素理想情况下应该具有相同的名称,而不是按顺序编号(n1,n2,n3,...)。如果确实需要编号,您可以添加包含该ID的其他属性(使用createAttribute中与Document类似的方法createElement)。

答案 1 :(得分:0)

我建议你创建一个对象&#34;注意&#34;并使用JAXB。看本教程: Tutorial。将对象转换为XML和XML转换为对象很容易。