2013-08-30 3 views
0
다음

내가이 작가의 목록을 찾으려면 파워 쉘 XML 쿼리

<?xml version="1.0" encoding="UTF-8"?> 
<books> 
    <book> 
     <title>a book</title> 
     <writer>Tom</writer> 
    </book> 
    <book> 
     <title>b book</title> 
     <writer>John</writer> 
    </book> 
    <book> 
     <title>c book</title> 
     <writer>Tom</writer> 
    </book> 
</books> 

톰입니다 .. 시험 XML이다. 그래서 내 스크립트는

[xml]$books = Get-Content C:\Users\Administrator\Documents\books.xml 
$books.book| %{$_.book.writer -match 'Tom'} 

입니다하지만이 스크립트는 작가를 보여 ...

writer 
Tom 
Tom 

내가 PLZ이

title  writer 
a book  Tom 
c book  Tom 

도움이 같은 날을보고 싶어요. ForEach-Object 당신은 즉, 투사하는 동안, 그것에서 오는 어떤 제한,

$books.book| ?{$_.book.writer -match 'Tom'} 

이 이전 파이프 라인의 요소에 필터입니다 :

답변

2

당신은 아마 % 대신 ?, 일명 Where-Object를 사용하려면 새로운 일련의 객체를 생성합니다.

코드와 출력이 의미가 없습니다. 우선 $booksbook 속성이 아니어야하며 books 속성이 있어야합니다. 책 당 writer 요소 다중이없는 한 당신은 대신 writer 객체의

True 
False 
True 

을 볼 수 있어야합니다. 파워 쉘 4

+0

와우! 고맙습니다. – user1788012

0

내가

select-xml -Path C:\XML\doc2.txt -XPath "//book[writer='Tom']//ancestor::book" 

제목 작가

책 톰 C 책 톰

를 작성하는 의미 사용

Ernest Brant