示例XML:
<assignments>
<assignment id="911990211" section-id="1942268885" item-count="21" sources="foo">
<options>
<value name="NumRetakes">4</value>
<value name="MultipleResultGrading">6</value>
<value name="MaxFeedbackAttempts">-1</value>
<value name="ItemTakesBeforeHint">1</value>
<value name="TimeAllowed">0</value>
</options>
</assignment>
<assignment id="1425185257" section-id="1505958877" item-count="4" sources="bar">
<options>
<value name="NumRetakes">0</value>
<value name="MultipleResultGrading">6</value>
<value name="MaxFeedbackAttempts">3</value>
<value name="ItemTakesBeforeHint">1</value>
<value name="TimeAllowed">0</value>
</options>
</assignment>
<assignments>
Run Code Online (Sandbox Code Playgroud)
使用XPath,我想选择节点"name"属性为"MaxFeedbackAttempts"并且节点内容为"-1"的所有赋值/赋值/选项/值节点.也就是说,我想返回看起来像这样的每个节点:
<value name="MaxFeedbackAttempts">-1</value>
Run Code Online (Sandbox Code Playgroud)
我可以使用以下命令获取具有指定属性的每个赋值/赋值/选项/值节点:
//assignment/options/value[@name="MaxFeedbackAttempts"]
Run Code Online (Sandbox Code Playgroud)
我只是不确定如何优化此路径以限制基于节点内容的结果.有没有办法用XPath做到这一点?
我正在寻找一种方法来搜索字符串中所有出现的模式,对返回的字符串执行一些重要的操作,然后替换它.
Ruby的String#gsub!方法不适合,因为我需要获取返回的事件,然后操纵它来提出将用于替换它的值.
当然,Ruby的String#scan方法可用于查找模式的所有实例,但是我不确定在对它们进行必要的更改后如何替换返回的实例.
下面的代码示例不是我实际工作中演示的那种我想要完成的事情.
# String
string = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est …Run Code Online (Sandbox Code Playgroud) 给定以下案例类:
case class Mailbox(value: String)
case class Group(objectType: String, mailbox: Mailbox)
Run Code Online (Sandbox Code Playgroud)
我试图找到一种编码 Group 对象的方法,如下所示,其中mailbox编码为字符串值,而不是对象:
{
"objectType" : "Group",
"mailbox" : "mailto:info@example.com"
}
Run Code Online (Sandbox Code Playgroud)
通过自动推导,编码/解码都成功了,但我最终得到了如下预期的结果:
{
"objectType" : "Group",
"mailbox" : {
"value" : "mailto:info@example.com"
}
}
Run Code Online (Sandbox Code Playgroud)
我可以通过添加如下所示的自定义编码器来实现我想要的结果:
object Mailbox {
implicit val encoder: Encoder[Mailbox] = (m: Mailbox) => Json.fromString(m.value)
implicit val decoder: Decoder[Mailbox] = deriveDecoder[Mailbox]
}
Run Code Online (Sandbox Code Playgroud)
但是,解码失败并显示以下内容:
DecodingFailure(Attempt to decode value on failed cursor, List(DownField(value), DownField(mailbox)))
Run Code Online (Sandbox Code Playgroud)
我试图通过为邮箱编写自定义解码器来解决这个问题,但得到了相同的结果。任何有关处理这种情况的正确方法的指导将不胜感激。
这是完整的代码:
DecodingFailure(Attempt to decode value on failed cursor, List(DownField(value), DownField(mailbox)))
Run Code Online (Sandbox Code Playgroud)
请注意,这是一个派生示例,仅用于演示我的问题。