【发布时间】:2011-12-22 21:04:16
【问题描述】:
我有以下字符串(它不是来自文件:它来自数据库):
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<person name="dave">
<job>teacher</job>
<job>musician</job>
</person>
<person name="chris">
<job>farmer</job>
</person>
</root>
当然,这个例子是简化的。
我必须使用基本的字符串函数“手动”解析它(例如:我不能使用 XML 解析器)。
我创建了一个 HashMap :
HashMap<String,ArrayList> personsAndJobs = new HashMap<String,ArrayList>
但是,我找不到可以像这样存储数据的好算法:
for each "person" tag {
// put the "name" attribute in a HashMap
personsAndJobs.put(person.get("name"),null)
jobs = new ArrayList<String>();
for each "job" of that person{
jobs.add(job.getTagContent())
}
personsAndJobs.put(person.get("name"),jobs)
}
这就是我尝试使用的算法。
谁能帮我把那个算法翻译成Java?
谢谢你, 问候。
【问题讨论】:
-
为什么要求不使用 xml 解析器?无需重新发明轮子,除非您只是为了教育。
-
此外,您可以只使用 Java XML 解析器的内置功能,因此如果“外部”解析器存在问题,这可以避免,因为它使用与 JVM 捆绑在一起的解析器。
-
我不明白为什么你不能使用 xml 解析器?这是作业吗?
-
它似乎已经成为算法了!当我都准备好时,我当然只会将人员和工作放在 personAndJobs 中,但否则你似乎朝着正确的方向前进。哦,至少对作业使用 HashSet 而不是 ArrayList,除非需要订购作业。如果有人得到一份特定的工作,这会更快地查找(例如,找到所有老师)。
标签: java string xml-parsing