มีคำถามที่คล้ายกัน แต่ดูเหมือนว่าวิธีแก้ปัญหาจะไม่ได้ผลในกรณีของฉัน: 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);
ใครมีความคิดบ้างไหม? ขอบคุณ.
1
ดูคำตอบอื่น ๆ ด้านล่างมันใช้ไม่ได้เนื่องจากการใช้งาน XPath 1.0 ไม่สามารถรับมือกับคำนำหน้าที่ว่างเปล่าได้
—
Paul Hatcher
ตามที่กล่าวไว้ที่นี่อย่าใช้คำนำหน้าว่างเมื่อเพิ่ม Namespace ใน [XmlNamespaceManager] ฉันแค่เพิ่มความคิดเห็นนี้ในกรณีที่ใครก็ตามต้องการดูตัวอย่างโค้ดขนาดเล็กพร้อมเอกสารที่มีแอตทริบิวต์ [xmlns] หลายแบบโดยมีและไม่มีส่วนต่อท้าย ดูที่นี่: stackoverflow.com/a/38272604/5838538
—
Jelgab