無効な XML 文字を等価の有効な XML に置き換える

無効なXML文字列とは < > " ' & などがあります。

これらの文字は XMLファイル内でデータとして使用されると構造を崩してしまいます。

この文字を等価で有効な文字に置き換えるには System.Security.SecurityElement の Escapeメソッドを使用します。

使用方法は下記の通りです。

PS >  [System.Security.SecurityElement]::Escape("<")
&lt;
PS >  [System.Security.SecurityElement]::Escape(">")
&gt;
PS >  [System.Security.SecurityElement]::Escape("`"")
&quot;
PS >  [System.Security.SecurityElement]::Escape("`'")
&apos;
PS >  [System.Security.SecurityElement]::Escape("&")
&amp;

 

ちなみにHTMLエンコードの場合は

Web.HttpUtility の HtmlEncodeメソッドを使用します。

PS >  [Web.HttpUtility]::HtmlEncode("<")
&lt;
PS >  [Web.HttpUtility]::HtmlEncode(">")
&gt;
PS >  [Web.HttpUtility]::HtmlEncode("`"")
&quot;
PS >  [Web.HttpUtility]::HtmlEncode("`'")
’
PS >  [Web.HttpUtility]::HtmlEncode("&")
&amp;

結果が微妙に違いますのでHTMLとXMLでのエンコードは使用するメソッドは使い分けましょう。

コメント

  1. muratah より:

    無効なXML文字です。
    場所 部分:/word/documentxml、行:2列:9590
    と出ています。対処法をお知らせください。

  2. mori masako より:

    無効な文字のため、ファイルが開けないとでた

タイトルとURLをコピーしました