Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 提取值的XSLT_Xml_Wcf_Xslt_Xml Namespaces - Fatal编程技术网

Xml 提取值的XSLT

Xml 提取值的XSLT,xml,wcf,xslt,xml-namespaces,Xml,Wcf,Xslt,Xml Namespaces,我们有一份申请。应用程序中的Web服务基于WCF 请参阅下面我从应用程序获得的响应xml。我正在努力找出如何从应用程序中提取某些值。有太多的内联xmlns声明 以下是我从应用程序中获得的输入xml: <?xml version="1.0" encoding="UTF-8" ?> <RequestSelectionValuesResponse xmlns="http://www.camstar.com/WebService/WSShopFloor" xmlns:xsd="http

我们有一份申请。应用程序中的Web服务基于WCF

请参阅下面我从应用程序获得的响应xml。我正在努力找出如何从应用程序中提取某些值。有太多的内联xmlns声明

以下是我从应用程序中获得的输入xml:

<?xml version="1.0" encoding="UTF-8" ?>
<RequestSelectionValuesResponse xmlns="http://www.camstar.com/WebService/WSShopFloor" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <RequestSelectionValuesResult>true</RequestSelectionValuesResult>
    <serviceInfo xmlns:q3="http://www.camstar.com/WebService/DataTypes" q3:type="OnlineQuery_Info">
      <OnlineQuerySelection>
        <RequestValue>false</RequestValue>
        <RequestMetadata>false</RequestMetadata>
        <RequestSubFieldValues>false</RequestSubFieldValues>
        <RequestSelectionValues>true</RequestSelectionValues>
        <SelectionValuesInput/>
        <SelectionValues>
          <RecordSetHeader>
            <ColumnCount>12</ColumnCount>
            <ColumnHeaders>
              <__listItem>
                <Name>No</Name>
                <FieldType>
                  <GenericType>Float</GenericType>
                  <SpecificType/>
                  <ReferenceType/>
                  <IsList>false</IsList>
                </FieldType>
                <Label>
                  <Id>0</Id>
                  <Name/>
                  <DefaultValue/>
                  <Value/>
                </Label>
              </__listItem>
              <__listItem>
                <Name>LotId</Name>
                <FieldType>
                  <GenericType>String</GenericType>
                  <SpecificType/>
                  <ReferenceType/>
                  <IsList>false</IsList>
                </FieldType>
                <Label>
                  <Id>0</Id>
                  <Name/>
                  <DefaultValue/>
                  <Value/>
                </Label>
              </__listItem>
              <__listItem>
                <Name>VendorCommitDate</Name>
                <FieldType>    
                  <GenericType>String</GenericType>
                  <SpecificType/>
                  <ReferenceType/>
                  <IsList>false</IsList>
                </FieldType>
                <Label>
                  <Id>0</Id>
                  <Name/>
                  <DefaultValue/>
                  <Value/>
                </Label>
              </__listItem>
              <__listItem>
                <Name>Operation</Name>
                <FieldType>
                  <GenericType>String</GenericType>
                  <SpecificType/>
                  <ReferenceType/>
                  <IsList>false</IsList>
                </FieldType>
                <Label>
                  <Id>0</Id>
                  <Name/>
                  <DefaultValue/>
                  <Value/>
                </Label>
              </__listItem>
              <__listItem>
                <Name>ProcessCode</Name>
                <FieldType>                         
                  <GenericType>String</GenericType>
                  <SpecificType/>
                  <ReferenceType/>
                  <IsList>false</IsList>
                </FieldType>
                <Label>
                  <Id>0</Id>
                  <Name/>
                  <DefaultValue/>
                  <Value/>
                </Label>
              </__listItem>
              <__listItem>
                <Name>DieQty</Name>
                <FieldType>
                  <GenericType>Float</GenericType>
                  <SpecificType/>
                  <ReferenceType/>
                  <IsList>false</IsList>
                </FieldType>
                <Label>
                  <Id>0</Id>
                  <Name/>
                  <DefaultValue/>
                  <Value/>
                </Label>
              </__listItem>
              <__listItem>
                <Name>WaferQty</Name>
                <FieldType>
                  <GenericType>Float</GenericType>
                  <SpecificType/>
                  <ReferenceType/>
                  <IsList>false</IsList>
                </FieldType>
                <Label>
                  <Id>0</Id>
                  <Name/>
                  <DefaultValue/>
                  <Value/>
                </Label>
              </__listItem>
              <__listItem>
                <Name>HardwareProductid</Name>
                <FieldType>
                  <GenericType>String</GenericType>
                  <SpecificType/>
                  <ReferenceType/>
                  <IsList>false</IsList>
                </FieldType>
                <Label>
                  <Id>0</Id>
                  <Name/>
                  <DefaultValue/>
                  <Value/>
                </Label>
              </__listItem>
              <__listItem>
                <Name>NoOfLot</Name>
                <FieldType>
                  <GenericType>Float</GenericType>
                  <SpecificType/>
                  <ReferenceType/>
                  <IsList>false</IsList>
                </FieldType>
                <Label>
                  <Id>0</Id>
                  <Name/>
                  <DefaultValue/>
                  <Value/>
                </Label>
              </__listItem>
              <__listItem>
                <Name>Status</Name>
                <FieldType>
                  <GenericType>String</GenericType>
                  <SpecificType/>
                  <ReferenceType/>
                  <IsList>false</IsList>
                </FieldType>
                <Label>
                  <Id>0</Id>
                  <Name/>
                  <DefaultValue/>
                  <Value/>
                </Label>
              </__listItem>
              <__listItem>
                <Name>InQueue</Name>
                <FieldType>
                  <GenericType>String</GenericType>
                  <SpecificType/>
                  <ReferenceType/>
                  <IsList>false</IsList>
                </FieldType>
                <Label>
                  <Id>0</Id>
                  <Name/>
                  <DefaultValue/>
                  <Value/>
                </Label>
              </__listItem>
              <__listItem>
                <Name>Multiple_Lot_Matched</Name>
                <FieldType>
                  <GenericType>String</GenericType>
                  <SpecificType/>
                  <ReferenceType/>
                  <IsList>false</IsList>
                </FieldType>
                <Label>
                  <Id>0</Id>
                  <Name/>
                  <DefaultValue/>
                  <Value/>
                </Label>
              </__listItem>
            </ColumnHeaders>
          </RecordSetHeader>
          <Data>
            <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="NewDataSet">
              <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msdata:EnforceConstraints="False">
                <xs:complexType>
                  <xs:choice minOccurs="0" maxOccurs="unbounded">
                    <xs:element name="Table1">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="No" type="xs:string" minOccurs="0"/>
                          <xs:element name="LotId" type="xs:string" minOccurs="0"/>
                          <xs:element name="VendorCommitDate" type="xs:string" minOccurs="0"/>
                          <xs:element name="Operation" type="xs:string" minOccurs="0"/>
                          <xs:element name="ProcessCode" type="xs:string" minOccurs="0"/>
                          <xs:element name="DieQty" type="xs:string" minOccurs="0"/>
                          <xs:element name="WaferQty" type="xs:string" minOccurs="0"/>
                          <xs:element name="HardwareProductid" type="xs:string" minOccurs="0"/>
                          <xs:element name="NoOfLot" type="xs:string" minOccurs="0"/>
                          <xs:element name="Status" type="xs:string" minOccurs="0"/>
                          <xs:element name="InQueue" type="xs:string" minOccurs="0"/>
                          <xs:element name="Multiple_Lot_Matched" type="xs:string" minOccurs="0"/>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:choice>
                </xs:complexType>
              </xs:element>
            </xs:schema>
            <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
              <NewDataSet xmlns="http://www.camstar.com/WebService/DataTypes">
                <Table1 diffgr:id="Table11" msdata:rowOrder="0" diffgr:hasChanges="inserted">
                  <No>1</No>
                  <LotId>5000018</LotId>
                  <VendorCommitDate>07-31-2013</VendorCommitDate>
                  <Operation>SORT</Operation>
                  <ProcessCode>SO</ProcessCode>
                  <DieQty>2500</DieQty>
                  <WaferQty>25</WaferQty>
                  <HardwareProductid>Hardware_Prod_for_5000018</HardwareProductid>
                  <NoOfLot>2</NoOfLot>
                  <Status>OPEN</Status>
                  <InQueue>NO</InQueue>
                  <Multiple_Lot_Matched>TRUE</Multiple_Lot_Matched>
                </Table1>
                <Table1 diffgr:id="Table12" msdata:rowOrder="1" diffgr:hasChanges="inserted">
                  <No>2</No>
                  <LotId>5000019</LotId>
                  <VendorCommitDate>08-31-2013</VendorCommitDate>
                  <Operation>SORT</Operation>
                  <ProcessCode>SO</ProcessCode>
                  <DieQty>50000</DieQty>
                  <WaferQty>25</WaferQty>
                  <HardwareProductid>Hardware_Prod_for_5000019</HardwareProductid>
                  <NoOfLot>2</NoOfLot>
                  <Status>OPEN</Status>
                  <InQueue>YES</InQueue>
                  <Multiple_Lot_Matched>TRUE</Multiple_Lot_Matched>
                </Table1>
              </NewDataSet>
            </diffgr:diffgram>
          </Data>
        </SelectionValues>
      </OnlineQuerySelection>
    </serviceInfo>
    <resultStatus xmlns:q1="http://www.camstar.com/WebService/DataTypes" xsi:type="q1:ResultStatus">
      <Message xmlns="http://www.camstar.com/WebService/DataTypes">Update completed successfully</Message>
      <IsError xmlns="http://www.camstar.com/WebService/DataTypes">false</IsError>
    </resultStatus>
  </RequestSelectionValuesResponse>

真的
假的
假的
假的
真的
12
不
浮动
假的
0
批号
一串
假的
0
卖方合同日期
一串
假的
0
活动
一串
假的
0
过程码
一串
假的
0
死亡数量
浮动
假的
0
晶圆数量
浮动
假的
0
硬件产品
一串
假的
0
努弗洛特
浮动
假的
0
地位
一串
假的
0
排队等待中
一串
假的
0
多批次匹配
一串
假的
0
1.
5000018
07-31-2013
分类
所以
2500
25
用于5000018的硬件产品
2.
打开
不
真的
2.
5000019
08-31-2013
分类
所以
50000
25
用于5000019的硬件产品
2.
打开
对
真的
更新已成功完成
假的
从上面的XML中,我需要提取这些值(表1下的所有值):


1.
5000018
07-31-2013
分类
所以
2500
25
用于5000018的硬件产品
2.
打开
不
真的
2.
5000019
08-31-2013
分类
所以
50000
25
用于5000019的硬件产品
2.
打开
对
真的

怎么办?非常感谢您的帮助。谢谢

我不确定您想如何提取它。以下是使用XSLT的解决方案:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet
  version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:d="http://www.camstar.com/WebService/DataTypes">

  <xsl:output omit-xml-declaration="yes"/>

  <xsl:template match="/">
    <xsl:for-each select="//d:NewDataSet/d:Table1">
      <xsl:copy-of select="." />
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>

使用LINQ to可以非常轻松地提取值
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet
  version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:d="http://www.camstar.com/WebService/DataTypes">

  <xsl:output omit-xml-declaration="yes"/>

  <xsl:template match="/">
    <xsl:for-each select="//d:NewDataSet/d:Table1">
      <xsl:copy-of select="." />
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>