Я пытался удалить дочерний элемент из xml, используя Scala xml. Я потратил так много времени, чтобы понять, как удалить дочерний элемент, но ничего не работает. Пожалуйста, помогите
Входной XML:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header>
<Header xmlns="http://abcde.com/reportserv">
<RequestId>kfgndfgldfknbdfbd</RequestId>
<ResponseTime>13.98</ResponseTime>
</Header>
</soap:Header>
<soap:Body>
<DetailResponse xmlns="http://abcde.com/reportserv">
<DetailResult>
<Detail>
<Domain>Not Available</Domain>
<Name />
<Email />
<PostalCode />
</Detail>
<Detail>
<Domain>Available</Domain>
<Name />
<Email />
<Phone>143-234-1234</Phone>
<PostalCode />
</Detail>
<Detail>
<Domain>Not Available</Domain>
<Name />
<Email>tp1@gmail.com</Email>
<Phone />
<PostalCode />
</Detail>
</DetailResult>
</DetailResponse>
</soap:Body>
</soap:Envelope>
Из приведенного выше xml я хотел бы удалить элементы электронной почты и телефона
Выходной XML:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header>
<Header xmlns="http://abcde.com/reportserv">
<RequestId>kfgndfgldfknbdfbd</RequestId>
<ResponseTime>13.98</ResponseTime>
</Header>
</soap:Header>
<soap:Body>
<DetailResponse xmlns="http://abcde.com/reportserv">
<DetailResult>
<Detail>
<Domain>Not Available</Domain>
<Name />
<PostalCode />
</Detail>
<Detail>
<Domain>Available</Domain>
<Name />
<PostalCode />
</Detail>
<Detail>
<Domain>Not Available</Domain>
<Name />
<PostalCode />
</Detail>
</DetailResult>
</DetailResponse>
</soap:Body>
</soap:Envelope>
Код, который я пробовал, выглядит только на один уровень
def deleteNodes(n: Elem, f: (Node) => Boolean) = {
n.child.foldLeft(NodeSeq.Empty)((acc, elem) => if (f(elem)) acc else acc ++ elem)
}
var deleted_elements = person.copy(child = deleteNodes(person, (elem) => (elem.label=="Email"|| elem.label=="Phone")))