سؤال

في Microsoft SQL Server 2008 ، عند التنفيذ .query('{xpath}/text()') على قيمة عمود دفق XML ، إذا كانت قيمة العقدة المحددة XPath تحتوي على "&"، قيمة الإرجاع"&amp" بدلاً من "&".

هل هذا خطأ ، أم أفعل شيئًا خاطئًا؟ أو بالأحرى ، كيف يمكنني الحصول على النص غير المشفر ، أي ما يعادل .innertext (لكل W3C XML DOM) ، مع SQLXML XPATH إذا لم يكن من المفترض أن يفعل Text () في استعلام XPATH؟

هل كانت مفيدة؟

المحلول

لا يوجد خطأ ، SQL XML تدلل تسلسل XML Escape بشكل صحيح:

declare @x xml;
set @x = '<node>&amp;some</node>';
select @x.value(N'(node)[1]', N'varchar(max)');

ما هو على الأرجح مشكلتك هي سوء فهم من جانبك من XML استفسار الطريقة: إنها تُرجع XML شظية ، وعلى هذا النحو ، سيتم هروب ... لأنه XML:

declare @x xml;
set @x = '<node>&amp;some</node>';
select @x.query(N'/node/text()');
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top