คำถามติดแท็ก xpath

วัตถุประสงค์หลักของ XPath คือการระบุส่วนต่างๆของเอกสาร XML นอกจากนี้ยังมีสิ่งอำนวยความสะดวกขั้นพื้นฐานสำหรับการจัดการสตริงตัวเลขและบูลีน XPath ใช้ไวยากรณ์ที่กะทัดรัดและไม่ใช่ XML XPath ทำงานบนนามธรรมโครงสร้างเชิงตรรกะของเอกสาร XML แทนที่จะเป็นไวยากรณ์พื้นผิว


2
เหตุใดดัชนีใน XPath จึงเริ่มต้นด้วย 1 และไม่ใช่ 0
เพื่อนร่วมงานบางคนและฉันกำลังเปรียบเทียบภาษาในอดีตที่เราได้ตั้งโปรแกรมไว้และกำลังพูดถึงประสบการณ์ของเรากับVBScriptด้วยคุณสมบัติแปลก ๆเช่นดัชนีที่อิง 1 รายการแทนที่จะเป็นดัชนีที่อิง 0 เหมือนกับภาษาอื่น ๆ เกือบทั้งหมดมีเหตุผลว่ามันเป็นภาษาสำหรับผู้ใช้ (เช่น Excel VBA) แทนที่จะเป็นภาษาสำหรับนักพัฒนา จากนั้นก็มีคนพูดว่า " XPath มีดัชนี 1 ฐานด้วย " ซึ่งฉันไม่อยากจะเชื่อเลยจนกว่าจะพบบทความนี้ซึ่งมีหลายเหตุผลที่ให้เหตุผลว่าเป็นแนวทางที่อิง 0รวมถึงบางส่วนจาก Michael Kay เอง: "... การจัดทำดัชนีแบบศูนย์มีแนวโน้มที่จะทำให้สูตรดัชนีง่ายขึ้นเมื่อเข้าถึงอาร์เรย์หลายมิติด้วยนิพจน์การเข้าถึงอาร์เรย์แบบมิติเดียว" "เมื่อจัดการตารางหรือสมัครสมาชิกเป็นสตริงการกำหนดแอดเดรสแบบศูนย์มักจะสะดวกกว่ามาก" "... การกำหนดแอดเดรสฮาร์ดแวร์ไม่ใช่ประโยชน์เพียงอย่างเดียวของการกำหนดแอดเดรสแบบ 0 เท่านั้น ... แต่ยังช่วยให้การคำนวณง่ายขึ้น ... " แต่ Michael Kay ถูกยกมาเป็นข้อสรุป: ... ตรรกะแบบ 1 เป็นตัวเลือกที่เหมาะสมสำหรับ XPath และ XSLT ... เนื่องจากภาษาได้รับการออกแบบมาสำหรับผู้ใช้ไม่ใช่สำหรับโปรแกรมเมอร์และผู้ใช้ยังคงมีนิสัยล้าสมัยในการอ้างถึงบทแรกในหนังสือเป็น Chapter หนึ่ง... …
117 xslt  xpath  indexing 

5
รับโหนดที่โหนดลูกมีแอตทริบิวต์
สมมติว่าฉันมี XML ต่อไปนี้: <book category="CLASSICS"> <title lang="it">Purgatorio</title> <author>Dante Alighieri</author> <year>1308</year> <price>30.00</price> </book> <book category="CLASSICS"> <title lang="it">Inferno</title> <author>Dante Alighieri</author> <year>1308</year> <price>30.00</price> </book> <book category="CHILDREN"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="WEB"> <title lang="en">XQuery Kick Start</title> <author>James McGovern</author> <author>Per Bothner</author> <author>Kurt Cagle</author> <author>James Linn</author> <author>Vaidyanathan Nagarajan</author> <year>2003</year> <price>49.99</price> …
116 xml  xpath 

7
เลือกองค์ประกอบหลักขององค์ประกอบที่รู้จักในซีลีเนียม
ฉันมีองค์ประกอบบางอย่างที่สามารถเลือกได้ด้วยซีลีเนียม 1 น่าเสียดายที่ฉันต้องคลิกองค์ประกอบหลักเพื่อให้ได้พฤติกรรมที่ต้องการ องค์ประกอบที่ฉันสามารถค้นหาได้อย่างง่ายดายมีแอตทริบิวต์ที่ไม่สามารถเลือกได้ทำให้ไม่สามารถคลิกได้ ฉันจะเลื่อนขึ้นไปข้างบนด้วยXPath ได้อย่างไร
116 select  xpath  selenium  parent 

9
เลือกค่าจากฟิลด์ XML ใน SQL Server 2008
เพียงแค่ดูที่ฟิลด์ XML ของฉันแถวของฉันจะมีลักษณะดังนี้: <person><firstName>Jon</firstName><lastName>Johnson</lastName></person> <person><firstName>Kathy</firstName><lastName>Carter</lastName></person> <person><firstName>Bob</firstName><lastName>Burns</lastName></person> โปรดทราบว่านี่คือสามแถวในตารางของฉัน ฉันต้องการส่งคืนผลลัพธ์ SQL เป็นตารางในรูปแบบ Jon | Johnson Kathy| Carter Bob | Burns แบบสอบถามอะไรจะสำเร็จ?
112 sql-server  xml  xpath 

5
วิธีละเว้นเนมสเปซด้วย XPath
เป้าหมายของฉันคือการแยกโหนดออกจากไฟล์ xml หลายไฟล์ที่มีหลายเนมสเปซโดยใช้ XPath ทุกอย่างทำงานได้ดีตราบเท่าที่ฉันรู้ URI ของเนมสเปซ ชื่อเนมสเปซยังคงเป็นค่าคงที่ แต่ Schemas (XSD) บางครั้งไคลเอนต์สร้างขึ้นโดยที่ฉันไม่รู้จัก จากนั้นฉันก็เหลือสามทางเลือก: ใช้สคีมาเดียวสำหรับเนมสเปซโดยหวังว่าจะไม่มีอะไรผิดพลาด (ฉันแน่ใจได้ไหม?) รับโหนดลูกของเอกสารและค้นหาโหนดแรกที่มีเนมสเปซ URI โดยหวังว่าจะอยู่ที่นั่นและใช้ URI โดยหวังว่าจะเป็นโหนดที่ถูกต้อง อาจผิดพลาดได้จากหลายสาเหตุ ยังไงก็บอก xpath: "ดูสิฉันไม่สนใจเนมสเปซเพียงแค่ค้นหาโหนดทั้งหมดที่มีชื่อนี้ฉันยังบอกชื่อเนมสเปซได้ด้วยไม่ใช่ URI" และนี่คือคำถามที่นี่ ... นี้ไม่ได้เป็นซ้ำของมากมาย "XPath ทำงานแสดงออกไม่ฉันเพราะฉันไม่ได้ตระหนักถึงความตระหนัก namespace" คำถามที่พบที่นี่หรือที่นี่ ฉันรู้วิธีใช้การรับรู้เนมสเปซ เพียง แต่ไม่ใช่วิธีการกำจัดมัน

2
XPath - การเลือกองค์ประกอบที่เท่ากับค่า
ใน Xpath ฉันต้องการเลือกองค์ประกอบที่เท่ากับค่าเฉพาะ ตัวอย่างข้อมูล XML: <aaa id="11" > <aaa id="21" > <aaa id="31" ></aaa> <bbb id="32" > <aaa id="41" ></aaa> <bbb id="42" ></bbb> <ccc id="43" ></ccc> <ddd id="44" >qwerty</ddd> <ddd id="45" ></ddd> <ddd id="46" ></ddd> </bbb> </aaa> <bbb id="22" > <aaa id="33" >qwerty</aaa> <bbb id="34" ></bbb> <ccc id="35" ></ccc> <ddd …
110 xpath 

3
วิธีใช้ XPath กับ XDocument
มีคำถามที่คล้ายกัน แต่ดูเหมือนว่าวิธีแก้ปัญหาจะไม่ได้ผลในกรณีของฉัน: Weirdness with XDocument, XPath และ namespaces นี่คือ XML ที่ฉันใช้งาน: <?xml version="1.0" encoding="utf-8"?> <Report Id="ID1" Type="Demo Report" Created="2011-01-01T01:01:01+11:00" Culture="en" xmlns="http://demo.com/2011/demo-schema"> <ReportInfo> <Name>Demo Report</Name> <CreatedBy>Unit Test</CreatedBy> </ReportInfo> </Report> และด้านล่างนี้คือรหัสที่ฉันคิดว่ามันควรจะใช้งานได้ แต่มันไม่ ... XDocument xdoc = XDocument.Load(@"C:\SampleXML.xml"); XmlNamespaceManager xnm = new XmlNamespaceManager(new NameTable()); xnm.AddNamespace(String.Empty, "http://demo.com/2011/demo-schema"); Console.WriteLine(xdoc.XPathSelectElement("/Report/ReportInfo/Name", xnm) == null); ใครมีความคิดบ้างไหม? ขอบคุณ.
109 c#  .net  xml  xpath  linq-to-xml 

1
กลยุทธ์การทดสอบวิธีการ Pandas read_xml ()
ปัจจุบันเครื่องมือ I / O ของแพนด้าไม่ได้คงไว้ซึ่งread_xml()วิธีการและคู่to_xml()กัน อย่างไรก็ตามการread_jsonพิสูจน์โครงสร้างที่เหมือนต้นไม้สามารถนำไปใช้สำหรับการนำเข้าดาต้าเฟรมและread_htmlสำหรับรูปแบบมาร์กอัป ถ้าทีมหมีแพนด้าไม่พิจารณาดังกล่าวเป็นread_xmlวิธีการสำหรับรุ่นหมีแพนด้าในอนาคตสิ่งที่พวกเขาจะดำเนินการติดตาม: แยกที่มีในตัวxml.etree.ElementTreeด้วยiterfind()หรือiterparse()ฟังก์ชั่นหรือโมดูลของบุคคลที่สามที่lxmlมี XPath ของ 1.0 และ 1.0 XSLT วิธี? ด้านล่างนี้คือการทดสอบของฉันสำหรับวิธีการสี่ประเภทบนอินพุต XML ที่เรียบง่ายแบนองค์ประกอบเป็นศูนย์กลาง ทั้งหมดถูกตั้งค่าสำหรับการแยกวิเคราะห์ทั่วไปสำหรับลูกระดับที่สองของรูทและแต่ละวิธีควรให้ดาต้าเฟรมของแพนด้าที่เหมือนกันทุกประการ ทั้งหมดยกเว้นการโทรครั้งสุดท้ายpd.Dataframe()ในรายการพจนานุกรม วิธี XSLT แปลง XML เพื่อ CSV สำหรับหล่อในStringIO()pd.read_csv() คำถาม (หลายส่วน) ประสิทธิภาพ: คุณจะอธิบายได้อย่างไรว่าiterparseไฟล์ที่มีขนาดใหญ่กว่ามักจะอธิบายได้ช้ากว่าเนื่องจากไฟล์ถูกแยกวิเคราะห์ซ้ำ ๆ ส่วนหนึ่งมาจากการifตรวจสอบตรรกะหรือไม่? หน่วยความจำ: หน่วยความจำ CPU สัมพันธ์กับการกำหนดเวลาในการเรียก I / O หรือไม่ XSLT และ XPath 1.0 มีแนวโน้มที่จะปรับขนาดได้ไม่ดีกับเอกสาร XML ที่มีขนาดใหญ่เนื่องจากไฟล์ทั้งหมดจะต้องอ่านในหน่วยความจำเพื่อแยกวิเคราะห์ กลยุทธ์: รายการพจนานุกรมเป็นกลยุทธ์ที่ดีที่สุดสำหรับการDataframe()โทรหรือไม่? …
109 python  xml  pandas  xslt  xpath 

9
เราใช้ xpath กับ BeautifulSoup ได้ไหม
ฉันใช้ BeautifulSoup เพื่อขูด url และมีรหัสต่อไปนี้ import urllib import urllib2 from BeautifulSoup import BeautifulSoup url = "http://www.example.com/servlet/av/ResultTemplate=AVResult.html" req = urllib2.Request(url) response = urllib2.urlopen(req) the_page = response.read() soup = BeautifulSoup(the_page) soup.findAll('td',attrs={'class':'empformbody'}) ตอนนี้ในโค้ดด้านบนเราสามารถใช้findAllเพื่อรับแท็กและข้อมูลที่เกี่ยวข้องได้ แต่ฉันต้องการใช้ xpath เป็นไปได้ไหมที่จะใช้ xpath กับ BeautifulSoup? ถ้าเป็นไปได้ใครช่วยกรุณาให้รหัสตัวอย่างเพื่อที่จะเป็นประโยชน์มากขึ้น?

4
ฉันจะเลือกองค์ประกอบลูกที่มีความลึกโดยใช้ XPath ได้อย่างไร
สมมติว่าฉันมีสิ่งนี้ (ตัวย่อ): <form id="myform"> <!-- some input fields --> <input type="submit" value="proceed"/> </form> จากนั้นฉันก็สามารถเลือกที่ปุ่มส่งโดย //form[@id='myform']/input[@type='submit']XPath เยี่ยมมาก อย่างไรก็ตามเทมเพลตของฉันอาจมีการเปลี่ยนแปลงและฉันต้องการมีความยืดหยุ่นในส่วนลึกของปุ่มส่ง มันอาจจะวางในตารางดังนี้: <form id="myform"> <!-- some input fields --> <table><tr><td> <input type="submit" value="proceed"/> </td></tr></table> </form> ฉันรู้ว่าฉันสามารถเลือกองค์ประกอบที่เป็นหลานได้ แต่ฉันไม่สามารถเลือก grand-grand-grand -...- ความลึกใด ๆ เช่น: //form[@id='myform']/*/input[@type='submit'] เลือกเฉพาะลูกหลานเท่านั้นไม่มีความลึกเพิ่มเติม //form[@id='myform']/*/*/input[@type='submit'] เลือกเฉพาะ grand-grand-children ไม่มีความลึกเพิ่มเติมหรือน้อยลง //form[@id='myform']/**/input[@type='submit'] ไม่ถูกต้อง ดังนั้นฉันจะเลือกปุ่มส่งนี้อย่างน่าเชื่อถือโดยไม่ใช้รหัสองค์ประกอบได้อย่างไร
105 xpath 

3
XPath: จะตรวจสอบได้อย่างไรว่ามีแอตทริบิวต์อยู่หรือไม่?
ด้วย XML ต่อไปนี้ฉันจะเขียนแบบสอบถาม XPath เพื่อดึงโหนดที่มีแอตทริบิวต์ได้fooอย่างไร: <node1> <node2> <node3 foo='bar'></node3> <node3></node3> <node3 bar='foo'></node3> <node3 foo='foobar'></node3> </node2> </node1>
104 xml  xpath 

2
วิธีเลือกแท็ก sibling / xml ต่อไปนี้โดยใช้ xpath
ฉันมีไฟล์ HTML (จาก Newegg) และ HTML ของพวกเขาถูกจัดระเบียบดังต่อไปนี้ ข้อมูลทั้งหมดในตารางข้อกำหนดคือ ' desc ' ในขณะที่ชื่อของแต่ละส่วนอยู่ใน ' name ด้านล่างนี้คือสองตัวอย่างข้อมูลจากเพจ Newegg <tr> <td class="name">Brand</td> <td class="desc">Intel</td> </tr> <tr> <td class="name">Series</td> <td class="desc">Core i5</td> </tr> <tr> <td class="name">Cores</td> <td class="desc">4</td> </tr> <tr> <td class="name">Socket</td> <td class="desc">LGA 1156</td> <tr> <td class="name">Brand</td> <td class="desc">AMD</td> </tr> <tr> <td class="name">Series</td> …
103 xml  xpath  lxml 

5
มีชื่อองค์ประกอบ XSLT หรือไม่
ใน XSLT มีไฟล์ <xsl:value-of select="expression"/> เพื่อรับค่าขององค์ประกอบ แต่มีบางอย่างให้เลือกชื่อแท็กขององค์ประกอบหรือไม่ ในสถานการณ์เช่นนี้: <person> <!-- required stuff --> <name>Robert</name> <!-- optional stuff, free form for future extension. Using XMLSchema's xsd:any --> <profession>programmer</profession> <hobby>photography</hobby> </person> <xsl:for-each select="person"> <xsl:tag-of select="."/> : <xsl:value-of select="."/> </xsl:for-each> เพื่อให้ได้ผลลัพธ์ดังนี้: name : Robert profession : programmer hobby : photography แน่นอน XSLT ข้างต้นจะไม่รวบรวมเพราะ …
101 xml  xslt  xpath 

3
XPath: จะเลือกโหนดที่ไม่มีแอตทริบิวต์ได้อย่างไร?
ใช้ XPath วิธีเลือกโหนดที่ไม่มีแอตทริบิวต์ (โดยที่แอตทริบิวต์ count = 0) ตัวอย่างเช่น: <nodes> <node attribute1="aaaa"></node> <node attribute1="bbbb"></node> <node></node> <- FIND THIS </nodes>
96 xpath 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.