我正在尝试获取一个只出现在xml文件中的特定字段,该文件始终具有相同的格式,这应该是一个简单的任务。
我想要的字段是“MaterialDefinitionID”,我使用firefox firebug来复制xpath,除了这个之外,它对我已经完成的所有其他文档都有效。起初我以为XPATH是 一些复杂的事情,萤火虫没有做对,但它似乎对我有用。
我使用的XPATH是:/ CPS / DA / ScghP / lkm123 / ReqSqe / MATreq / MaterialDefinitionID
我试图从以下数据获取xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<CPS xmlns="http://www.wonderware.com/wwei/v0201/schemas" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<AA/>
<DA>
<ScghP>
<ID>1741284-WOG</ID>
<Location/>
<PublishedDate>2014-03-05 16:03:36</PublishedDate>
<StartTime>1/28/2014 12:00:00 AM</StartTime>
<EndTime>1/28/2014 1:27:44 AM</EndTime>
<lkm123>
<ID>54123s0</ID>
<OLKM>54123s0 (EPIC Bar)</OLKM>
<StartTime>1/28/2014 12:00:00 AM</StartTime>
<EndTime>1/28/2014 1:27:44 AM</EndTime>
<Priority>0</Priority>
<ReqSqe>
<ID>000xxxx</ID>
<Description>epic item</Description>
<EarliestStartTime>1/28/2014 12:00:00 AM</EarliestStartTime>
<LatestEndTime>1/28/2014 1:27:44 AM</LatestEndTime>
<Duration>0H00M00SPT0</Duration>
<MArked/>
<MATreq>
<MaterialDefinitionID>54123s0</MaterialDefinitionID>
<Description>EPIC Bar</Description>
<Location/>
<Quantity/>
<MPRPAZ/>
<MPRPAZ/>
<LKPK>Required</LKPK>
</MATreq>
<ReqSqe/>
<LKPK>Required</LKPK>
</ReqSqe>
</lkm123>
<Any/>
</ScghP>
</DA>
</CPS>
该文件已经过重构,以保护客户的数据,但相关的结构
组件已被保留。
感谢您的时间和任何帮助。
编辑:所以我试图定义一个命名空间并使用XSLT获取MaterialDefinitionID字段,我到目前为止的脚本是:
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ww="wonderware.com/wwei/v0201/schemas">
<xsl:template match="/">
<xsl:for-each select="ww:CPS/ww:DA/ww:ScghP/ww:lkm123/ww:ReqSqe/ww:MATreq">
MaterialDefinitionID: <xsl:apply-templates select="ww:MaterialDefinitionID"/>;
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
完全像这样的东西适用于没有命名空间问题的其他文件,但不是 出于某种原因。
答案 0 :(得分:1)
这是通常的命名空间问题 - XML中的xmlns="http://www.wonderware.com/wwei/v0201/schemas"
表示该文档中没有前缀的所有元素名称都属于该命名空间,但XPath中未加前缀的名称引用 no中的元素命名空间。您需要使用XPath库或工具提供的任何机制将前缀绑定到命名空间,然后在XPath表达式中使用该前缀:
/ww:CPS/ww:DA/ww:ScghP/ww:lkm123/ww:ReqSqe/ww:MATreq/ww:MaterialDefinitionID
(其中ww
前缀绑定到http://www.wonderware.com/wwei/v0201/schemas
URI)