查询 XML 个问题

Querying on XML issues

我使用这个查询已经一年多了。在 UTF-8 XML 上使用它时它工作得很好。

XML 当前是 NVARCHAR(MAX) 类型,因此我必须先将其转换为 XML

SELECT REPLACE(
  XML,
  '<MetaData04></MetaData04>',
  '<MetaData04>' + cast([XML] as XML).query(N'/BOM/BO/Documents/NumAtCard').value('.', 'varchar(30)') + '</MetaData04>'
) 
FROM table1 
WHERE state = 1

现在这在 XML:

上完美运行
<?xml version="1.0" encoding="utf-8"?>
<BOM>
  <BO>
    <Documents>
      <NumAtCard>1234</NumAtCard>
      <MetaData04>test</MetaData04>
    </Documents>
  </BO>
</BOM>

但不是这个XML:

<?xml version="1.0" encoding="iso-8859-1"?>
<BOM>
  <BO>
    <Documents>
      <Field Name="NumAtCard" Multi="No">
        <Value>1234</Value>
      </Field>
      <Field Name="MetaData04" Multi="No">
        <Value>test</Value>
      </Field>  
    </Documents>
  </BO>
</BOM>

有没有办法在这个 ISO-8859-1 XML 上 .query

我正在使用 SQL Server Management Studio (SSMS) 2017。

提前致谢,Koen。

/BOM/BO/Documents/NumAtCard需要改为

/BOM/BO/Documents/Field[@Name="NumAtCard"]/Value