すべての既存のユーザーFirefoxプロファイルに対して、powershellを使用してFirefox mimeTypes.rdfを操作しようとしています。 http://kb.mozillazine.org/MimeTypes.rdfでガイドを1として特定のノードの下に値を挿入します
<RDF:Seq RDF:about="urn:mimetypes:root">
:
私は、次のエントリに
<RDF:li RDF:resource="urn:mimetype:application/x-zip-compressed"/>
具体的に下を追加します。私は参照XML文書からRDF:Descriptionノードを更新するためにInnerXmlを追加しましたが、RDF:Seq直接エントリは私にはわかりません。
<?xml version="1.0"?>
<RDF:RDF xmlns:NC="http://home.netscape.com/NC-rdf#" xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<RDF:Seq RDF:about="urn:schemes:root">
<RDF:li RDF:resource="urn:scheme:webcal"/>
<RDF:li RDF:resource="urn:scheme:ircs"/>
<RDF:li RDF:resource="urn:scheme:mailto"/>
<RDF:li RDF:resource="urn:scheme:irc"/>
</RDF:Seq>
<RDF:Seq RDF:about="urn:mimetypes:root">
<RDF:li RDF:resource="urn:mimetype:application/x-ica"/>
</RDF:Seq>
</RDF:RDF>
多くのアプローチが試みられてきた:
[xml]$s = (Select-Xml -Path .\seq.rdf -XPath /).node
$xpathquery = "/RDF:RDF[@xmlns:NC=`"http://home.netscape.com/NC-rdf#`"]/RDF:Seq[@RDF:about=`"urn:mimetypes:root`"]/RDF:li"
$nsmgr = $s.NameTable
$nsmgr.AddNamespace('NC',"http://home.netscape.com/NC-rdf#")
$nsmgr.AddNamespace('RDF',"http://www.w3.org/1999/02/22-rdf-syntax-ns#")
Select-Xml -Xml $s -XPath $xpathquery -Namespace $nsmgr
そしてAppendChild()
/CreateElement()
方法
$child = $s.CreateElement
AppendChild($child)
そしてAppendChild()
さまざまな方法使用して使用: $null = $s.RDF.seq.Where{
($_.About -match 'urn:mimetype:application')
}.Component.AppendChild($child)
を参照ファイルからまたはImportNode()
は:あなたが見ることができるように
foreach ($Node in $a.RDF.Seq.ChildNodes) {
($xc.DocumentElement.AppendChild($s.ImportNode($a.RDF.Seq.ChildNodes, $true)))
#$xc.DocumentElement.Description.SetAttribute("description", "Config file for testing")
}
私は、XMLを操作する固体把握せずに、ここで混乱しています。問題の一部はXPathクエリです(必要な場合)。