2

ドキュメントをXMLにシリアル化してバックエンドに送信するブラウザ拡張を作成しています。IE:XMLSerializerは、「xmlns:xml」属性を追加して「xml:lang」属性をシリアル化します。

シリアライザがタグの "xml:lang"属性を満たしている場合、シリアライザはそのノードに(xmlns:xml)名前空間定義を追加します。

この結果、バックエンドでXML解析エラーが発生します。

「xmlns:xml」属性を追加せずにシリアル化するにはどうすればよいですか?

// We create DOM node by parsing it from string 
// Then we serialize it again 
var content = "'<span id="el" xml:lang="ar" lang="ar">سالم</span>'"; 
var el = new DOMParser().parseFromString(content, 'application/xml'); 

var serialized = new XMLSerializer().serializeToString(el); 
console.log(serialized); 

// <span id="el" lang="ar" xml:lang="ar" xmlns:xml="http://www.w3.org/XML/1998/namespace">سالم</span> 
// Serializing parsed node: attribute 'xmlns:xml' is added, how do I get rid of that? 

答えて

-1

最近同じ問題が発生しました。私はそれを防ぐためにどのような方法を知っているが、文字列をやってはかなり信頼できるものでなければならない、それを取り除くために代わるものではありません:

var cleanedXmlStr = xmlStr.replace(
    /\sxmlns\:xml=['"]http\:\/\/www\.w3\.org\/XML\/1998\/namespace['"]/g, ''); 

は別のオプションは、このようなサードパーティのシリアライザを使用することです

https://github.com/cburgmer/xmlserializer

関連する問題