2013-10-11 3 views
6

Powershell:मैं पावरहेल में नेमस्पेस के साथ xpath वाले तत्व को कैसे एक्सेस करूं?

$doc = new-object System.Xml.XmlDocument 
$doc.Load($filename) 

$items = Select-Xml -Xml $doc -XPath '//item' 
$items | foreach { 
    $item = $_ 
    write-host $item.name 
} 

मुझे कोई आउटपुट प्राप्त

एक्सएमएल:

<?xml version="1.0" encoding="UTF-8"?> 
<submission version="2.0" type="TREE" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:noNamespaceSchemaLocation="TREE.xsd" xmlns="some/kind/of/tree/v1"> 
    <group> 
    <item></item> 
    <item></item> 
    <item></item> 
    </group> 
<submission> 

उत्तर

10

आप कुछ समस्याओं चल रहा है। सबसे पहले आपको XPath पैटर्न में नेमस्पेस निर्दिष्ट करने की आवश्यकता है, एक्सएमएल अच्छी तरह से गठित नहीं है (क्लोजिंग टैग एक अंत टैग नहीं है) और सिलेक्ट-एक्सएमएल XmlInfo देता है और सीधे XmlElement नहीं देता है। इसे आज़माएं:

$xml = [xml]@' 
<submission version="2.0" type="TREE" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:noNamespaceSchemaLocation="TREE.xsd" xmlns="some/kind/of/tree/v1"> 
    <group> 
    <item></item> 
    <item></item> 
    <item></item> 
    </group> 
</submission> 
'@ 

$ns = @{dns="some/kind/of/tree/v1"} 
$items = Select-Xml -Xml $xml -XPath '//dns:item' -Namespace $ns 
$items | Foreach {$_.Node.Name} 
संबंधित मुद्दे