2 Stimmen

Regex Lookaheads

Notwendigkeit, den Inhalt von Root zu erfassen <pubDate> Element, aber im Dokument kann es entweder innerhalb von <item> Element oder innerhalb <channel> Element. Auch <item> ist ein Kind von <channel> Ich werde ein Beispiel bringen

<channel>
  ...
  <pubDate>10/2/2010</pubDate>
  ...
  <item>
    ...
    <pubDate>13/2/2029</pubDate>
    ...
  </item>
  ...
</channel>

erfassen müssen 10/2/2010

Mit dem <item> kein Problem, kann es erfassen, zusammen mit seiner <pubDate> .

2voto

Ming-Tang Punkte 16979

Regexp ist kein gutes Werkzeug, um mit Programmiersprachen umzugehen, die mit kontextfreien Grammatiken geparst werden. Versuchen Sie, XML DOM zu verwenden, um die Aufgabe zu erledigen.

1voto

Tim Pietzcker Punkte 311448

Ich kenne mich nicht mit JavaScript aus, also kann ich Ihnen nicht mit dem DOM helfen. Ich stimme 100% zu, dass es eine schlechte Idee ist, XML mit Regex zu parsen. Es könnte eine schnelle, sehr schmutzig, und sehr brüchig Workaround, obwohl:

Wenn die Einrückung in der gesamten Datei konsistent ist, und <channel> Elemente immer auf der gleichen Einrückungsebene sind, können Sie diese Tatsache als Leitfaden für die Regex verwenden. In Ihrem Beispiel /^ {2}<pubDate>([^<]*)<\/pubdate>/m (= zwei Leerzeichen nach dem Zeilenanfang) könnte gerade noch funktionieren.

Die Verwendung erfolgt auf eigene Gefahr. Hier sind Drachen usw.

1voto

KM. Punkte 1372

Schauen Sie sich jQuery an und sehen Sie, ob dies beim Lesen/Parsen des XML hilft: http://think2loud.com/reading-xml-with-jquery/

KM

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X