Was ist der richtige Weg wäre, eine Zeichenfolge wie diese in einem großen xml zu finden:Regex eine XML-Zeichenfolge
<ser:serviceItemValues>
<ord1:label>Start Type</ord1:label>
<ord1:value>Loop</ord1:value>
<ord1:valueCd/>
<ord1:activityCd>iactn</ord1:activityCd>
</ser:serviceItemValues>
1. in diesem xml es oben mit unterschiedlichen Werten eine Menge Wiederholungen des Elements sein (Loop usw.) und andere XML-Elemente in diesem Dokument. Hauptsächlich geht es mir darum, ob es einen ServiceItemValues gibt, der keinen 'Loop' als Wert hat. Ich habe versucht, diese, aber es scheint nicht zu Arbeit:
private static Pattern LOOP_REGEX =
Pattern.compile("[\\p{Print}]*?<ord1:label>Start Type</ord1:label>[\\p{Print}]+[^(Loop)][\\p{Print}]+</ser:serviceItemValues>[\\p{Print}]*?", Pattern.CASE_INSENSITIVE|Pattern.MULTILINE);
Dank
Danke für alle Kommentare, lassen Sie mich ein wenig für diejenigen, die sagen, nicht Regex zu verwenden. Es ist mir egal, was der Wert ist, ich versuche nicht, es zu bekommen. Ich will nur sicher sein, dass es eine Schleife sagt, wenn nicht, werde ich eine Ausnahme werfen. Also ich denke, es ist Validierung, aber ich kann das Xsd nicht ändern. – arinte
Ich glaube jeder versteht, was Sie versuchen zu tun. Reguläre Ausdrücke sind jedoch nicht die beste Lösung. Markup wird am besten Parsern überlassen. – doomspork