解析C#2.0中的XML片段中的三个特定元素

问题描述:

如何使用C#2.0解析XML中少数标记的值?解析C#2.0中的XML片段中的三个特定元素

我想分析的标签,并像

1的值)<v9:Severity>SUCCESS</v9:Severity>

2)<v9:TrackingNumber>634649515000016</v9:TrackingNumber>

3)<v9:Image>iVBORw0KGgoAAAANSUhEUgAAAyAAAASwAQAAAAAryhMIAAAagEl</v9:Image>

如何与获得上述元素的值编程C#2.0?

<?xml version="1.0" encoding="UTF-8"?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <env:Header xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> 
    <soapenv:Body> 
     <v9:ProcessShipmentReply xmlns:v9="http://fedex.com/ws/ship/v9"> 
      <v9:HighestSeverity xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">SUCCESS</v9:HighestSeverity> 
      <v9:Notifications xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
       <v9:Severity>SUCCESS</v9:Severity> 
       <v9:Source>ship</v9:Source> 
       <v9:Code>0000</v9:Code> 
       <v9:Message>Success</v9:Message> 
       <v9:LocalizedMessage>Success</v9:LocalizedMessage> 
      </v9:Notifications> 
      <v9:CompletedShipmentDetail> 
       <v9:CompletedPackageDetails xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
        <v9:SequenceNumber>1</v9:SequenceNumber> 
        <v9:TrackingIds> 
         <v9:TrackingIdType>GROUND</v9:TrackingIdType> 
         <v9:TrackingNumber>634649515000016</v9:TrackingNumber> 
        </v9:TrackingIds> 
        <v9:Barcodes> 
         <v9:BinaryBarcodes> 
          <v9:Type>COMMON_2D</v9:Type> 
          <v9:Value>Wyk+HjAxHTAyMDI3ODAdODQwHTEzNx02MzQ2NDk1</v9:Value> 
         </v9:BinaryBarcodes> 
         <v9:StringBarcodes> 
          <v9:Type>GROUND</v9:Type> 
          <v9:Value>9612137634649515000016</v9:Value> 
         </v9:StringBarcodes> 
        </v9:Barcodes> 
        <v9:Label> 
         <v9:Type>OUTBOUND_LABEL</v9:Type> 
         <v9:ShippingDocumentDisposition>RETURNED</v9:ShippingDocumentDisposition> 
         <v9:Resolution>200</v9:Resolution> 
         <v9:CopiesToPrint>1</v9:CopiesToPrint> 
         <v9:Parts> 
          <v9:DocumentPartSequenceNumber>1</v9:DocumentPartSequenceNumber> 
          <v9:Image>iVBORw0KGgoAAAANSUhEUgAAAyAAAASwAQAAAAAryhMIAAAagEl</v9:Image> 
         </v9:Parts> 
        </v9:Label> 
       </v9:CompletedPackageDetails> 
      </v9:CompletedShipmentDetail> 
     </v9:ProcessShipmentReply> 
    </soapenv:Body> 
</soapenv:Envelope> 
+0

这里是LINQ到XML教程:http://msdn.microsoft.com/en-us/library/bb387098.aspx。你究竟在哪里卡住? – Heinzi

+0

我正在使用c#2.0,所以我不能使用LINQ。 – Mou

既然你说你使用C#2.0(和,因此,不能使用LINQ到XML),最简单的办法只有找出你的XML的单值将使用XPath:

因为你的XML命名空间包含<v9:...>,这个问题变得有点复杂:需要初始化一个XmlNamespaceManager并把它传递给XPathNavigator。这里有一篇博客文章详细解释了这个问题。一个例子也可以在XmlNode.SelectNodes MSDN页面找到(参见上面的链接)。

+1

+1。此外,用户应该阅读[xml命名空间](http://msdn.microsoft.com/en-us/library/ms950779.aspx) – Reniuz