次のXMLデータを使用して、私がPythonコードを呼び出している関連するキーの値を取得します。そして、私はサードパーティ製のライブラリを使用せずにこの作業を達成したいと思います。SelectSingleNodeでPythonを使用してXMLを解析する
<Userinfo>
<UserData>
<item key="DateOfBirth" value="19851103" />
<item key="FirstName" value="John" />
<item key="LastName" value="Dicaprio" />
<item key="Gender" value="M" />
<item key="Email" value="[email protected]" />
<item key="ContactNo" value="235625341" />
</UserData>
</Userinfo>
上記のxmlコードから、私は以下のPythonコード内で呼び出すキーから値を抽出したいと思います。
def ExtractXml(args):
url = '....'
wc = System.Net.WebClient()
xml = wc.DownloadString(url)
doc = System.Xml.XmlDocument()
doc.LoadXml(xml)
root = doc.DocumentElement
nsmgr = System.Xml.XmlNamespaceManager(doc.NameTable)
#nsmgr.AddNamespace('ns','http://schemas.microsoft.com/developer/msbuild/2003')
node = root.SelectNodes('/Userinfo/UserData',nsmgr)
tcount=root.SelectNodes('/Userinfo/UserData').Count
if not node:
ServiceDesk.Log.PrintError('No condition node')
return
r=[]
t={}
counts=0
for itemNode in node:
counts += 1
fullname = xstr(itemNode.SelectSingleNode("/item[@key='FirstName']/@value",nsmgr))
empname = xstr(itemNode.SelectSingleNode("/item[@key='LastName']/@value",nsmgr))
cardcountry = xstr(itemNode.SelectSingleNode("/item[@key='Email']/@value",nsmgr))
#birthdate = ServiceDesk.Common.ParseDateTime(itemNode.SelectSingleNode("item[@key='DateOfBirth']"))
t = {'counter':counts,'FirstName':fullname,'LastName':empname,'Email':cardcountry,'__rowid__':counter,'__totalcount__':tcount}
r.append(t)
return r
次のコードを使用して、SelectSingleNode呼び出しで関連するキーの値を取得しません。前もって感謝します。
のElementTreeライブラリは、こので動作しません..:/ – Zoom1992
投稿する前に、ElementTreeがIronPythonに含まれているかどうかを確認しました(https://ironpython-test.readthedocs.io/en/latest/library/xml.etree.elementtree.html)。それはなぜここで働かないのですか? – Tomatohater
'LightException'オブジェクトに 'etree'という属性がありません。 – Zoom1992