Xml 提取值的XSLT
我们有一份申请。应用程序中的Web服务基于WCF 请参阅下面我从应用程序获得的响应xml。我正在努力找出如何从应用程序中提取某些值。有太多的内联xmlns声明 以下是我从应用程序中获得的输入xml: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
<?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>