Я не уверен, что полностью понял не существует как его потомок ... или что вы точно подразумеваете под Я добавилэто но вот мой прямой ответ на добавление, необязательно, прямого потомка книг :
def addC1IfNotHere(someXml: scala.xml.Elem) = (someXml \ "c1") match {
case Seq() =>
someXml.copy(child = <c1>Null</c1> +: someXml.child)
case _ => someXml
}
это работает так:
val someXmlWithC1 =
<books>
<c1>anything else</c1>
<book title="The Woman in White">
<author>Wilkie Collins</author>
</book> <book title="Great Expectations">
<author>Charles Dickens</author>
</book>
</books>
val someXmlWithoutC1 =
<books>
<book title="The Woman in White">
<author>Wilkie Collins</author>
</book> <book title="Great Expectations">
<author>Charles Dickens</author>
</book>
</books>
val hasItsOriginalC1 = addC1IfNotHere(someXmlWithC1)
val hasANewC1 = addC1IfNotHere(someXmlWithoutC1)
println(hasItsOriginalC1)
println(hasANewC1)
обычно должно печатать:
<books>
<c1>anything else</c1>
<book title="The Woman in White">
<author>Wilkie Collins</author>
</book> <book title="Great Expectations">
<author>Charles Dickens</author>
</book>
</books>
<books><c1>Null</c1>
<book title="The Woman in White">
<author>Wilkie Collins</author>
</book> <book title="Great Expectations">
<author>Charles Dickens</author>
</book>
</books>
Надеюсь, это поможет.Не стесняйтесь, когда c1 находится не там, где вы ожидали, или в другом месте.