【问题标题】:java xpath XML parsingjava xpath XML解析
【发布时间】:2014-05-10 17:52:15
【问题描述】:

我编写了一些代码来使用 xpath 从 XML 字符串中提取不同部分。我的问题是xml字符串是否是例如

<event>alarm, red, 2</event>

xpath 有什么简单的方法可以选择在第一个逗号之后说出字符串中的第二个单词,所以“红色”?我现在正在使用

String event = xpath.evaluate("/event", doc);

返回"alarm, red, 2",但我想要的只是"red"。我知道我可以使用事件并使用子字符串来提取 "red" 但我想知道是否有办法使用 xpath 而不是子字符串来做到这一点?

代码:

String xml = "<event>alarm, red, 2<event>";  

XPathFactory xpathFactory = XPathFactory.newInstance();
XPath xpath = xpathFactory.newXPath();

InputSource source = new InputSource(new StringReader(xml));
Document doc = (Document) xpath.evaluate ("/", source, XPathConstants.NODE);

【问题讨论】:

    标签: java xml xpath xml-parsing string-parsing


    【解决方案1】:

    如果您使用 XPath 2.0 实现,您可以使用 tokenize 并使用正则表达式将字符串以逗号分隔,然后选择第二个标记:

    tokenize(/event, ',')[2]
    

    【讨论】:

    • 太棒了!我将如何在我的代码中实现这一点?类似 String event = xpath.evaluate("/event", doc).tokenize(/event, '2')[2];??
    • tokenize 是 XPath 2.0,因此您需要一个支持它的实现,例如 Saxon 9。有关在 Java 中设置 Saxon 的信息,请参阅this question
    【解决方案2】:

    我认为这是不可能的,这样做可能不是一个好主意,你的元素的内容应该是原子的,我会避免将此解析与 Xpath 混合,并简单地用一个实用方法包装事件第一个字。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-20
      • 2013-11-25
      • 2015-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多