2011-09-16 21 views
0

我需要幫助。我在讀一個文件(不是XML文件),其中一個內容是很像形式XML:如何spli象XML標籤在PowerShell中

<xml> <details> 
<details><number>AB053091351</number><totalcontent>2</totalcontent></details> 
<details><number>AB053091996</number><totalcontent>2</totalcontent></details> 
<details><number>AB053092621</number><totalcontent>2</totalcontent></details> 
<details><number>AB053093365</number><totalcontent>0</totalcontent></details> 
</details> </xml> 

我這樣做:

$TRGFile <<-- filename of the content above. 


    $result = Get-Content $TRGFile 
    $pattern = '<policynumber>' 
    $detailResult = ($result |Select-String -Pattern $pattern) 

結果給了我這個:

<details><number>AB053091351</number><totalcontent>2</totalcontent></details> 
<details><number>AB053091996</number><totalcontent>2</totalcontent></details> 
<details><number>AB053092621</number><totalcontent>2</totalcontent></details> 
<details><number>AB053093365</number><totalcontent>0</totalcontent></details> 

我需要循環,每行以「AB053091351」 &「2」中獲得的價值。請注意,雖然這是XML格式,但它顯然是文字。

任何人都知道如何提取這些標記中的價值? Powershell函數/ cmdlet適用於此。?

他文件在.txt中。我TRID使用該轉換文件的XML:

Get-Content E:\file.txt | Export-CliXML E:\file.xml 

爲了我做的代碼就像你所提供的一個。但是生成的XML文件是不同的:

<Obj RefId="5"> 
    <S><details><number>053091351</number><contentpages>2</contentpages></details></S> 
</Obj> 

在這

<details><number>053091351</number><contentpages>2</contentpages></details> 

was referred as string & not as tag. 
+0

示例數據和您的代碼不適合。你從哪裏得到'$ pattern ='''? –

+2

這種格式與XML有何區別? –

回答

0

不知道你想要什麼與數據做(和仍然不知道那裏是XML以及爲什麼你的差異無法將文件作爲XML處理),但是這應該讓您開始:

foreach ($elem in $detailResult){write-host (([xml]$elem).details.number+" "+([xml]$elem).details.totalcontent)}