【问题标题】:Reading XML data between tags读取标签之间的 XML 数据
【发布时间】:2012-05-17 23:52:26
【问题描述】:

我有一个 XML,我正在为此编写一个 servlet 来从 XML 中获取内容。一个这样的标签是<itunes:author>Jonathan Kendrick</itunes:author>
我需要为此获得作者价值。因为

我尝试使用命名空间并为 : 使用转义序列,但它对我不起作用。

对于其他 XML 元素,我只是在使用

String link=node.getChildText("link").toString();

我正在使用 Jdom 解析器

【问题讨论】:

  • 您应该能够使用采用命名空间的 getChildText 的重载来获得它。你能详细说明一下它是如何失败的吗?
  • 它没有为我提供所需容器中的任何值。你能提供一个同样的例子吗?谢谢
  • 我可能已经尝试了一个例子,但现在 rolfi 已经在他的答案中,这对我来说是正确的。

标签: java xml servlets jdom


【解决方案1】:

在您的 XML 中,序列 'itunes:author' 代表所谓的 Q-Namem 和“限定名称”。在 XML 中,它由一个“命名空间前缀”和一个“本地名称”组成。在您的示例中,命名空间前缀是“itunes”,“本地名称”是“作者”。

您想要的是名称空间中链接到前缀“itunes”的“author”元素。实际的命名空间通常是一个完整的 URL。我相信您示例的完整 URL 可能是 xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd",但您应该检查一下。

所以,命名空间是“http://www.itunes.com/dtds/podcast-1.0.dtd”,它的前缀被声明为“itunes”(但它可能是别的东西 - 实际的前缀名称是技术上不重要...)

您想在“http://www.itunes.com/dtds/podcast-1.0.dtd”命名空间中获取“作者”,所以您想要:

String author = node.getChildText("author", Namespace.getNamespace("http://www.itunes.com/dtds/podcast-1.0.dtd"));

有关命名空间的更多信息,请查看:http://www.w3schools.com/xml/xml_namespaces.asp

【讨论】:

  • 编译时出错:无法解析符号符号:变量命名空间
  • 导入导入 org.jdom.Namespace;对于相同的。问题解决了。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-26
  • 1970-01-01
相关资源
最近更新 更多