use C# handle xml with namespace

http://stackoverflow.com/questions/585812/using-xpath-with-default-namespace-in-c

Question
:

I've got an XML document with a default namespace. I'm using a XPathNavigator to select a set of nodes using Xpath as follows:

XmlElement
 myXML 
=
 
...;
  
XPathNavigator navigator = myXML . CreateNavigator ();
XPathNodeIterator result = navigator . Select ( "/outerelement/innerelement" );

I am not getting any results back: I'm assuming this is because I am not specifying the namespace. How can I include the namespace in my select?



Solution :
2 down vote

In case the namespaces differ for outerelement and innerelemen


XmlNamespaceManager manager = new XmlNamespaceManager ( myXmlDocument . NameTable );
                            manager
. AddNamespace ( "o" , "namespaceforOuterElement" );
                            manager
. AddNamespace ( "i" , "namespaceforInnerElement" );

string xpath = @ "/o:outerelement/i:innerelement"
// For single node value selection
XPathExpression xPathExpression = navigator . Compile ( xpath );
string reportID = myXmlDocument . SelectSingleNode ( xPathExpression . Expression , manager ). InnerText ;

// For multiple node selection
XmlNodeList myNodeList = myXmlDocument . SelectNodes ( xpath , manager );



Microsoft sample:

Dim reader As New XmlTextReader("myfile.xml" )
Dim nsmanager As New XmlNamespaceManager(reader.NameTable)
nsmanager.AddNamespace("msbooks" , "www.microsoft.com/books" )
nsmanager.PushScope()
nsmanager.AddNamespace("msstore" , "www.microsoft.com/store" )
While reader.Read()
Console.WriteLine("Reader Prefix:{0}" , reader.Prefix)
Console.WriteLine("XmlNamespaceManager Prefix:{0}" ,
nsmanager.LookupPrefix(nsmanager.NameTable.Get (reader.NamespaceURI)))
End While

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值