【发布时间】:2014-10-08 10:38:16
【问题描述】:
我有一个如下所示的 XML 文件:
<CPageDataXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<control id="busRowOAppr2EIDLookUpUserControl" controltype="business">
<field controlvaluetype="single" key="busRowOAppr2EIDLookUpUserControl_txtEID">
<valuefield value="709227">E8 - John Doe</valuefield>
</field>
<field controlvaluetype="hidden_single" key="busRowOAppr2EIDLookUpUserControl_txtEID_Email">
<valuefield value="_JohnDoe@Wonder.com">emailid</valuefield>
</field>
</control>
<control id="busDelegationFromDate123" controltype="business">
<field controlvaluetype="single" key="txtCalanderDateWithImage_UserControl">
<valuefield value="" />
</field>
</control>
</CPageDataXML>
我想读取 control id="busRowOAppr2EIDLookUpUserControl" 的 valuefield 的值
C# 代码是: 这是加载 XML 的代码:
XmlDocument xPagedata=new XmlDocument();
XmlNode xnodePagedata = null;
xPagedata.LoadXml(strPageData);
这是 SelectSingleNode 的代码:
string a = xnodePagedata.SelectSingleNode(//Control[@id='busRowOAppr2EIDLookUpUserControl']).Attributes["Value"].Value;
我尝试使用 SelectSingleNode(string) 但这给了我一个空引用异常。请建议我应该如何处理这个问题。我是 XML 的绝对初学者。
【问题讨论】:
-
您使用什么来读取/解析 XML?你在使用 Linq-to-XML 吗?你关注你的
xmlns了吗?请发布您到目前为止的代码。 -
请展示您尝试过的内容 - 我个人建议使用 LINQ to XML...您根本不需要 XPath。
-
我已经添加了代码。请看。
-
@JonSkeet 他不能使用
System.XML.Linq命名空间。你知道为什么吗?
标签: c# .net xml c#-4.0 xml-parsing