我需要读取xml标签中特定值的值,我尝试过我只能找到获取标签元素的值,我需要从根元素遍历到子元素。有一个选择,我可以直接选择一个标签并获得它的价值。
在下面的xml exa中,我需要使用c#从xml获取123456值。 例如: -
<ForwardActionRequest xmlns:auth="test" xmlns="http://www.test">
<auth:Authentication>
<auth:AuthenticationData>
<auth:AuthenticationKey>test</auth:AuthenticationKey>
<auth:Username>test</auth:Username>
<auth:Password>test</auth:Password>
</auth:AuthenticationData>
</auth:Authentication>
<SearchOrderReference>
<Reference>123456</Reference>
<AllocatedBy>test</AllocatedBy>
<Description>test</Description>
</SearchOrderReference>
答案 0 :(得分:4)
您可以使用LINQ to XML:
XDocument doc = XDocument.Load(yourXMLText);
string value = doc.Element("SearchOrderReference").Element("Reference").Value;
请注意,我还没有测试过此代码。
我还鼓励您详细了解LINQ to XML here。
答案 1 :(得分:0)
使用XmlDocument.SelectSingleNode()传入将描述所需节点的XPath,然后提取值。在使用名称空间时使用此原型:
http://msdn.microsoft.com/en-us/library/h0hw012b(v=vs.110).aspx
了解如何实例化XmlNamespaceManager()并使用相关前缀对其进行初始化(它不必是xml本身的内容),然后发出以下请求:
XmlNode node = doc.SelectSingleNode("/t:ForwardActionRequest/t:SearchOrderReference/t:Reference");
鉴于您将“t”与“http://www.test”相关联。
答案 2 :(得分:0)
您可以将xml内容反序列化为类并直接获取元素的值,或者可以使用LINQ to XML来检索元素值,
XDocument doc = XDocument.Load(XMLContent或XMLPath); 字符串= doc.Element( “SearchOrderReference”)元素( “参考”)值;
答案 3 :(得分:0)
从使用VS 2005的帖子中,您可以尝试从字符串中读取XML的XML Reader。这是一个例子。
using (XmlReader reader = XmlReader.Create(new StringReader(xml)))
{
reader.ReadToFollowing("SearchOrderReference");
reader.ReadToFollowing("Reference");
string r = reader.ReadInnerXml();
}
答案 4 :(得分:0)
请尝试以下代码:
XDocument doc = XDocument.Load(yourXMLText);
var node = xmlDoc.SelectSingleNode("//SearchOrderReference[@Reference='123456']");
然后提取节点的属性以获取引用标记的值。