簡體   English   中英

使用冒號在powershell中搜索XML

[英]Search XML in powershell with colon

我有一個格式的XML:

<val:root>
   <bla>
     <value>1234</value>
</val:root>

我可以將文件的內容添加到$ xml變量中,但是我遇到了“val:root”的問題。

謝謝你的幫助!

編輯:

我嘗試了$ xml。“val:root”,$ xml.val,$ xml.'val:root'和$ xml。{val:root}。 在Mizo的回答中找到了解決方案:

$ XML。 root .value

您的XML文件缺少val命名空間的聲明。 此外, <bla>元素未終止。

  • <root>元素中放置一個名稱空間聲明:

     <val:root xmlns:val="urn:dummy"> 

    那你可以做

      PS C:\\> $xml = [xml] (get-content test.xml) PS C:\\Users\\mizo\\test> $xml.root.value 1234 
  • 如果您無法控制XML數據,則可以在偽根中聲明val命名空間作為解決方法:

     $xml = [xml] ("<dummyroot xmlns:val='urn:dummy'>" + (get-content test.xml) + "</dummyroot>") 

    然后你可以訪問元素:

     PS C:\\> $xml.dummyroot.root.value 1234 

如果您願意,將urn:dummy替換為相關標識符。

所以即使沒有所有信息,我也會對這個問題進行一次嘗試。 根據您提供的示例XML,您的XML格式不正確。 你至少有兩個問題。 第一個是沒有匹配關閉標記的標記。 第二個是你使用命名空間而沒有聲明它。 要解決此問題,請更改此:

<val:root>

對此:

<val:root xmlns:val="http://www.w3.org/TR/html4/">

或者如果您願意,可以使用更合適的URI。

您只需在加載XML文件時定義命名空間。

http://huddledmasses.org/xpath-and-namespaces-in-powershell/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM