lxmlのドキュメントを検索して読むことでこの質問に簡単に答えることができますが、私は役に立たなかったことを謝ります。PythonでXPathとETXPathを使用しているLXML
私はlxmlのfindallを頻繁にXMLファイルのクエリに使用してきました。最近、私は必要なデータを抽出するためにワイルドカードを使用する必要がありました。これは私にXpathの使用をもたらしました。
私はETXPathでは動作しますが、Xpathでは動作しません。なぜ私は混乱しています。 XMLファイルの抽象
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<DC xmlns="http://tradefinder.db.com/Schemas/MEL/MelHorizon_0_4_2.xsd">
<Header>
<FileName>DBL_MPA_Gap_PRD_2017-06-01T07-50-52.xml</FileName>
<ValidityDate>2017-05-31</ValidityDate>
<Version>0.42</Version>
<NoOfRecords>17228</NoOfRecords>
</Header>
<Overviews>
<OverviewLevelTimeStamp>
<Identifier>Z 1 Index, TRADE</Identifier>
<Level>2.2120000000000002</Level>
<Timestamp>09:00:00.000</Timestamp>
</OverviewLevelTimeStamp>
</Overviews>
</DC>
そして、私のPythonコードは "gap_xml" は、ファイルの構文解析を=
findshiz = ETXPath("//" + namespace + "DC/" + namespace + "Overviews/" + namespace + "OverviewLevelTimeStamp[" + namespace + "Identifier= 'Z 1 Index, TRADE']")
required_nodes = findshiz(gap_xml)
を抽出するために使用されます。
このコードは機能します。何らかの理由で私がxpathを試してみると、それはしません。これは、xpathでETXPathの名前を変更するだけです。私がワイルドカードを使用する必要がある理由は、 "Z 1 Index、TRADE"の代わりに、Z 1 Index *になります。
ありがとうございました。質問を改善するためにとにかく私にお知らせください。
* namespace *とはなんですか?代入行を表示してください: 'namespace = ...' – Parfait