3

問題

"や などのエンティティがコンテンツに既に含まれている属性を割り当てたいとします&
この例では、title 属性を次のようにしますStack "Stacky" Overflow

$elem = $xml.CreateElement("Site");
$elem.SetAttribute("Title", "Stack "Stacky" Overflow");

しかし、それは次のような XML 出力になります。

<Site Title="Stack &amp;quot;Stacky&amp;quot; Overflow" />


その動作は、 XmlElement.SetAttribute Methodに関するドキュメントにも記載されています。

エンティティ参照を含む属性値を割り当てるには、ユーザーはXmlAttributeノードとXmlTextおよび XmlEntityReferenceノードを作成し、適切なサブツリーを作成し、SetAttributeNode を使用 てそれを属性の値として割り当てる必要があります。

4

3 に答える 3

4

ソリューション

$elem = $xml.CreateElement("Site");

$elemAttr = $xml.CreateAttribute("Title");
$elemAttr.InnerXml = "Stack &quot;Stacky&quot; Overflow";

$elem.SetAttributeNode($elemAttr);

XML 出力:

<Site Title="Stack &quot;Stacky&quot; Overflow" />
于 2012-11-04T19:57:04.337 に答える
1

これが役立つかどうかわからない

Add-Type -AssemblyName System.Web
$elem = $xml.CreateElement("Site");
$elem.SetAttribute("Title",[System.Web.HttpUtility]::HtmlDecode("Stack &quot;Stacky&quot; Overflow"));
$elem.OuterXml
于 2012-11-05T12:09:24.773 に答える
0
PS> $xml.Site.Title = [System.Security.SecurityElement]::Escape('Stack "Stacky" Overflow')
PS> $xml.Site.Title

Stack &quot;Stacky&quot; Overflow
于 2012-11-04T20:15:16.943 に答える