如何使用c#检索特定的xml标记值

时间:2013-11-13 09:39:12

标签: c# xml

我需要读取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>

5 个答案:

答案 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']");

然后提取节点的属性以获取引用标记的值。