簡體   English   中英

在 C# 中使用 Regex 提取 XML 值

[英]XML value extraction using Regex in C#

如果之前有人問過這個問題,我深表歉意,之前關於這個主題的所有帖子都有幫助,但我仍然無法找出我的問題的解決方案。 我對編程和正則表達式仍然很陌生,如果這是一個愚蠢的問題,我很抱歉。

我需要一個正則表達式模式,它將采用 3 個特定 xml 標簽之間的值。 並用空替換該值。

這是我目前擁有的:

string pattern = @"<A99_01>(.*?)</A99_01>";
string input = "<A99_01>TEST</A99_01><A99_02>TEST</A99_02><A99_03>TEST</A99_03><A99_04>TEST</A99_04>";
string replacement = "";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);

我當前的正則表達式模式只匹配所需的標簽之一,我無法弄清楚如何只選擇它的值而不拉整條線。 是否可以列出多個模式?

我只想對標簽<A99_01><A99_02><A99_03>執行替換,而不觸及<E99_04>上方的任何標簽。

在此先感謝您的幫助!

您可以使用捕獲組。

Regex.Replace(str, @"<(A99_0[123]>).*?</\1", "<$1</$1");

演示

您絕對沒有辦法為此使用正則表達式。 雖然它可以“工作”,但它會非常不靈活,難以改變,並且維護起來很痛苦。

我建議:

  • 通過 XmlDocument 或 XDocument(最好)加載 XML
  • 使用 Linq to XML 解析 XML
  • 過濾掉您不想要的任何標簽
  • 根據過濾后的版本構建一個新的 XML 文檔/文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM