2009-10-16 23 views
6

Yüklediğim bir XML belgesine ve XPath ile arama yapmaya çalışıyorum. Bu dosyadaki kök düğüm ve dosya sonu </t:Transmission> ile düzgün bir şekilde kapatılmıştır.Ayrıştırma XML: Öğemdeki kolon XPath'ın onu kaçırmasına neden oluyor

Sorunum, soyu ekseni kullanmadan ağaca yürüyemem. Başka bir deyişle, SelectSingleNode("//TransactionHeader[SHIPPERSTATE='CA']") yapabilir ve karşılığında bir düğüm alabilirim. Ama eşdeğer olması gerekeni yapamam: SelectSingleNode("/Transmission/TransmissionBody/Transaction/TransactionHeader[SHIPPERSTATE='CA']")

t:'u kaldırırsam, /Transmission'da bir XPath araması yapabilirim ve tüm dosyayı alabilirim. Orada t: ile sadece null olsun. Veya SelectSingleNode("t:Transmission")'u denediğimde, XPath ifademde bir hata alıyorum.

Genel olarak root öğesini sorgulamama gerek duymuyorum, bu yüzden aramalarım için descendant eksenini kullanarak yapabilmem gerekir. Ama XML benim için geçerli görünüyor ve bu yüzden nasıl çözüleceğini bilmek isterim. Ayrıca istemciden "t:" yi kaldırmasını istemiyorum çünkü nasıl başa çıkacağımı bilmiyorum.

cevap

8

"t:", 'urn: InboundShipment' ad alanına bağlı bir ad alanı ön ekidir. Düzgün işlemek için, ön ekinin neye bağlı olduğunu söylemelisiniz. This page, ad alanını işlemek için System.Xml.XmlNamespaceManager'ı nasıl kullanacağını açıklamalıdır.

Düzenleme: Ayrıca bkz. this answer.

+0

Harika, teşekkürler James! Büyük referanslar da var. –