From 46ca762a966ac9094af6e16f5e911e4ce948f4a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=A5=E6=B5=A9?= Date: Tue, 9 Sep 2025 09:31:00 +0800 Subject: [PATCH] =?UTF-8?q?refactor(fake):=20=E4=BC=98=E5=8C=96=20XML=20?= =?UTF-8?q?=E6=A0=87=E7=AD=BE=E5=86=85=E5=AE=B9=E6=8F=90=E5=8F=96=E6=AD=A3?= =?UTF-8?q?=E5=88=99=E8=A1=A8=E8=BE=BE=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改了 pickTag 函数中的正则表达式,以更准确地匹配标签内容 - 将 [\s\S]*? 替换为 [sS]*?,以提高匹配精度 - 此修改解决了潜在的命名空间与嵌套同名标签的复杂情形下的匹配问题 --- fake/xml.fake.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fake/xml.fake.ts b/fake/xml.fake.ts index 209a987..98bab9d 100644 --- a/fake/xml.fake.ts +++ b/fake/xml.fake.ts @@ -13,7 +13,7 @@ function esc(s: string) { // 从原始 XML 文本中提取某个标签的文本内容(弱解析,仅用于演示) function pickTag(xml: string, tag: string) { // 说明:使用非贪婪匹配并允许标签上带属性;N.B. 未处理命名空间与嵌套同名标签的复杂情形 - const re = new RegExp(`<${tag}(?:\n|\r|\s|>|/)[^>]*>([\s\S]*?)<\/${tag}>`, 'i'); + const re = new RegExp(`<${tag}(?:\n|\r|s|>|/)[^>]*>([sS]*?)`, 'i'); const m = xml.match(re); return m?.[1]?.trim() ?? ''; }