2017-08-24 7 views
1

現在、TFS PowerToolsを使用してPowerShellでクエリを実行し、結果をXMLファイルとしてエクスポートしています。そのXMLファイルをAlteryxにインポートして、さらに処理したいと思っています。 PowerShellでXMLエンコーディング情報を削除します

<?xml version="1.0" encoding="utf-8"?> 

しかしAlteryxがこれを好きではないとエンコード情報が取り出されない限り、ドキュメントを読むことを拒否:TFS PTはXMLファイルをエクスポートするときには、先頭に次のヘッダーを置きます。エンコード情報を削除するためにPowerShellを使用する方法はありますか?

ありがとうございます。

答えて

0

はい、できます:

$doc = New-Object xml 
$doc.Load((Resolve-Path ".\path\to\doc.xml").ProviderPath) 
if($doc.FirstChild.NodeType -eq 'XmlDeclaration') 
{ 
    $doc.FirstChild.Encoding = $null 
} 
$doc.Save((Resolve-Path ".\path\to\doc.xml").ProviderPath) 
+0

ありがとうございました!私はあなたのコードをスクリプトに挿入し、ファイルパスを変更しましたが、スクリプトを実行すると次のエラーが発生します: – camruny

+0

"1"引数で "Load"を呼び出す例外: "'、16進値0x00無効な文字です。行2、位置 1. " – camruny

+0

C:\ Users \ RunQuery.ps1:29 char:1 + $ doc.Load((Resolve-Path "。\ workItems.xml")ProviderPath) + CategoryInfo:NotSpecified:(:) []、 MethodInvocationException + FullyQualifiedErrorId:DotNetMethodException "1"引数で "保存"例外: "無効なXMLドキュメント。ドキュメントにルート要素がありません。" C:\ Users \ RunQuery.ps1:34 char:1 + $ doc.Save((解決パス "。\ workItems.xml")ProviderPath) + +カテゴリ情報:NotSpecified:(:) [] 、MethodInvocationException + FullyQualifiedErrorId:DotNetMethodException – camruny

0

これは動作しますが、しかし、xmlファイルは、もはや有効です。

$xml = get-content $xmlfile | Out-String 
$xml = $xml.replace('<?xml version="1.0" encoding="utf-8"?>',"") #removes text 
$xml | out-file $xmlfile #outputs text in file 
+0

この[コードは質問に答えるかもしれません](https:///meta.stackexchange.com/q/148272)、このコードが質問に答える理由*および/または*方法*に関する追加の文脈を提供することで、長期的な価値が向上します。 – Parfait

関連する問題