根据用户输入创建 XML 个元素
Create XML elements from user input
我正在尝试从控制台获取用户输入并将其输入 XML 文件。每次用户移动到下一行时,我都想获取他们输入的字符串并创建一个新元素。
这是我想要实现的目标:
<?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 tutorials 中阅读对 JAXB 的介绍。
如果您仍想使用标准 DOM 来执行此操作,则需要执行以下操作:
Element noteElement = doc.createElement("note");
notes.appendChild(noteElement);
这意味着,正如@Andreas 在下面评论的那样,理想情况下,元素应该具有相同的名称,而不是按顺序编号(n1、n2、n3、...)。如果确实需要编号,可以添加另一个包含id的属性(使用Document
中类似于createElement
的方法createAttribute
)。
我建议您创建一个对象 "Note" 并使用 JAXB。请参阅本教程:
Tutorial。将 object 转换为 XML 和将 XML 转换为 object.
很容易
我正在尝试从控制台获取用户输入并将其输入 XML 文件。每次用户移动到下一行时,我都想获取他们输入的字符串并创建一个新元素。 这是我想要实现的目标:
<?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 tutorials 中阅读对 JAXB 的介绍。
如果您仍想使用标准 DOM 来执行此操作,则需要执行以下操作:
Element noteElement = doc.createElement("note"); notes.appendChild(noteElement);
这意味着,正如@Andreas 在下面评论的那样,理想情况下,元素应该具有相同的名称,而不是按顺序编号(n1、n2、n3、...)。如果确实需要编号,可以添加另一个包含id的属性(使用
Document
中类似于createElement
的方法createAttribute
)。
我建议您创建一个对象 "Note" 并使用 JAXB。请参阅本教程: Tutorial。将 object 转换为 XML 和将 XML 转换为 object.
很容易