【发布时间】:2010-01-12 20:02:01
【问题描述】:
我一定是犯了一些愚蠢的错误。我有一个返回 XML <a><b>123</b></a> 的服务器,现在我想匹配那个 XML。所以我写了类似的东西
xml match {
case <a><b>{_}</b></a> => true
}
只要我不必处理多行 XML 文字,它就可以工作。所以重要的是服务器将整个 XML 作为单行发送给我。 XML 大到足以爆炸一行代码,但我不知道如何让它工作。
服务器发送<a><b>123</b><c>123</c><d>123</d><e>123</e><f>123</f></a>,我想这样做:
xml match {
case <a>
<b>{_}</b>
<c>{valueOfC}</c>
<d>{_}</d>
<e>{_}</e>
<f>{_}</f>
</a> => valueOfC
}
但我总是得到一个 MatchError。如果我将所有内容写在一行中,它就可以工作。那么问题来了:如何在编写人类可读代码的同时匹配 XML?
我当然尝试通过 Google 找到答案。有趣的是,所有示例都是单行或递归工作。
【问题讨论】:
-
您希望如何指定元素之间的空白很重要的 case 语句?
-
您必须同时支持恕我直言。 E4X 使用 XML.ignoreWhitespace 的方法范围配置来定义它。因此,每当您想显式忽略空白时,您都可以说“XML.ignoreWhitespace = true”。
标签: xml scala pattern-matching