【问题标题】:Parsing XML in Java manually在 Java 中手动解析 XML
【发布时间】:2017-09-26 12:42:10
【问题描述】:

所以我得到了格式的 XML 文件

<Level1 name="Foo1">
  <Level2 name="Foo2">
    <Level3 name="Foo3">
    </Level3>
  </Level2>
</Level1>

我应该阅读以解析在我的 Java 程序中相应格式化的文件。 Java 是否具有 XML 的任何内置功能(例如查看节点所在的级别等),还是我必须使用常规扫描仪对其进行扫描,然后像读取普通文本文件一样读取输入?我被明确告知不要使用任何现有的解析器或外部库等。

【问题讨论】:

  • 你做了多少秒的研究?我的意思是:谷歌会在 1 秒内为您找到大量用于“java xml 解析”的链接;而你可能花了 1 分钟才写出这个问题?
  • Does Java have any built-in functionality with XML (for example seeing what level a node is on etc) - 嗯,是的,SAXParser。但是你有been specifically told not to use any existing parser,所以你自己手动解析(祝你好运)
  • 亲爱的朋友,如果您不必使用任何其他库,那么很明显,您可以使用的只有 java 文件读取器/写入器。所以这意味着你需要使用通用的java文件解析和构建你的程序。
  • @GhostCat 没错。我认为要求某人不使用现有的解析器完全是无稽之谈,但如果他被要求这样做,他唯一的选择就是从头开始编写解析器:/
  • “我被明确告知不要使用任何现有的解析器”。在我看来,这意味着这不是 StackOverflow 的合适问题。你不能指望社区会帮助你解决对解决方案有如此荒谬限制的问题。

标签: java xml xml-parsing


【解决方案1】:

正如 cmets 得出的结论:你不能两全其美。如果您的作业说“手动解析 XML”并且您不允许使用库;那么这就是你必须做的。

从这个意义上说:你转向像 Scanner 这样的内置类;并使用其标记化功能解析您的 XML;请参阅 here 了解一些指导意见。

从那里开始:您可以通过不同程度的努力来解决这个问题。就像:你需要解析“真正的”XML吗?或者传入的文件是否具有固定格式?

你看,当你总是得到 6 行与你的示例完全一样的时候;那么你可以阅读 6 行文本;并使用正则表达式、拆分、子字符串...操作来获取“变量”内容。

当然,当您被要求解析 anything 是有效的 XML 时,您需要一个真正的解析器来发出事件;以及对不同类型的事件“做某事”的“框架”。另一个question 包含一个答案(“棘轮怪胎”的第二个),概述了如何做到这一点(显然是用另一种语言)。

【讨论】:

  • 我明白了。我不会得到固定数量的节点,但格式确实是固定的,所以我知道会发生什么。我认为您发布的链接显示了我需要的基本概念,感谢您的回答! :)
  • 如果您要使用自己的解析器来解析 XML 的某个子集,那么您应该做的第一件事就是非常精确和正式地定义该 XML 子集。
猜你喜欢
  • 2017-07-10
  • 2016-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-26
相关资源
最近更新 更多