1

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

5 回答 5

4

您可以使用 LINQ to XML:

XDocument doc = XDocument.Load(yourXMLText);
string value = doc.Element("SearchOrderReference").Element("Reference").Value;

请注意,我没有测试过这段代码。

我还鼓励您在此处阅读有关LINQ to XML的更多信息。

于 2013-11-13T09:41:31.893 回答
0

从您使用 VS 2005 的帖子中,您可以尝试使用 XML Reader 从字符串中读取 XML。这是一个例子。

using (XmlReader reader = XmlReader.Create(new StringReader(xml)))
{
    reader.ReadToFollowing("SearchOrderReference");
    reader.ReadToFollowing("Reference");
    string r = reader.ReadInnerXml();
}
于 2013-11-13T10:01:49.573 回答
0

您可以将 xml 内容反序列化为类并直接获取元素的值,也可以使用 LINQ to XML 检索元素值,

XDocument doc=XDocument.Load(XMLContent 或 XMLPath); string=doc.Element("SearchOrderReference").Element("Reference").Value;

于 2013-11-13T09:57:36.360 回答
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 ”相关联。

于 2013-11-13T09:56:33.123 回答
0

试试下面的代码:

XDocument doc = XDocument.Load(yourXMLText);
var node = xmlDoc.SelectSingleNode("//SearchOrderReference[@Reference='123456']");

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

于 2013-11-13T10:08:32.940 回答