2010-10-14 34 views
12

tôi đã xác định một chuỗi XML sử dụngtải chuỗi XML với PowerShell

$str = "<a><b></b></a>" 

Bây giờ tôi muốn tải nó thành một [xml] biến để có thể vận dụng nó là các nút, vv Hàng dưới kết quả trong một lỗi ...

$str = [xml]"<a><b></b></a>" 

Làm cách nào để thực hiện việc này?

+4

Tôi không nhìn thấy bất kỳ lỗi từ dòng đó. Trước đây bạn đã gõ mạnh biến $ str hay gì đó chưa? Hãy thử đặt loại trước khi biến để (lại) gõ mạnh biến: [xml] $ str = "" (hoặc [xml] $ str = [xml] "") – Jaykul

+0

Tương tự ở đây. Nó hoạt động cho tôi khi bạn đã gõ nó ở trên. –

+1

Phiên bản PowerShell cũ. – rickythefox

Trả lời

20

tôi tìm thấy bài viết này để được khá tốt: http://www.pluralsight-training.net/community/blogs/dan/archive/2006/11/25/42506.aspx

Và điều này một: http://powershell.com/cs/blogs/ebook/archive/2009/03/30/chapter-14-xml.aspx

Đối với khi XML cần phải được xử lý trong PowerShell


Câu hỏi của bạn dường như làm việc cho tôi . Làm thế nào về bạn đăng lỗi để chúng tôi có thể xem những gì đang xảy ra? Tôi chỉ cần thêm test bên trong chuỗi của mình để hiển thị tôi có thể truy cập vào giá trị, nhưng nó cũng sẽ hoạt động mà không có nó.

Yes I added test, but you can see my example worked Full Image


KHÁC EDIT:

Đúc một chuỗi cũng làm việc cho tôi, vậy làm thế nào về bạn chỉ cho chúng ta một số công việc kể từ khi tôi không thể tái tạo vấn đề của bạn Again, I added test to show that I can access XML members Full Image


... và tôi chạy nó với chuỗi của bạn và nó làm việc tốt ... ...notice there was an empty return? Full Image

+0

Đó là tất cả về tải XML từ một FILE. Tôi muốn tải nó từ STRING. – rickythefox

+0

Làm thế nào về bạn gửi lỗi của bạn nhận được sau đó, bởi vì tôi đã có thể tải chuỗi trong PowerShell của tôi tốt. Cũng có thể dễ dàng trên mũ, các tài liệu tham khảo bên trong những bài viết VẪN ÁP DỤNG (xem làm thế nào gây phiền nhiễu mũ).Tôi sẽ cập nhật câu hỏi của tôi cho bạn – Urda

+0

Trả lời câu trả lời, tôi không thấy những gì bạn đang phá vỡ. – Urda

3

Hãy thử điều này

$xmlcontent = variable which holds xml data in string 
$xml = New-Object -TypeName System.Xml.XmlDocument 
$xml.LoadXml($xmlcontent) 
0

Đối với lợi ích của người tìm kiếm, nếu bạn có một dòng trên cùng của xml mà bao gồm định dạng (thay vì thẳng vào nút gốc) thông tin bạn cần phải xóa dòng trên cùng trước khi bạn có thể bỏ dòng trên cùng

ví dụ:

<?xml version="1.0" encoding="utf-8"?> 
<Courses> 
    <CourseEntry Type="Mandatory" Name="Math"/> 
    <CourseEntry Type="Mandatory" Name="Coding" /> 
    <CourseEntry Type="Optional" Name="Economics" /> 
    <CourseEntry Type="Optional" Name="History" /> 
</Courses> 

Yêu cầu:

$xmlFile = Get-Content "*.xml" 
$xmlFileMinusFormatData = $xmlFile[1..($xmlFile.Length - 1)] #we need to remove the first line 
$usableXml = [xml]$xmlFileMinusFormatData # Convert to xml for easy handling 
$usableXml.Courses.CourseEntry.Count # just a count of rows 
Các vấn đề liên quan