使用 XDocument 将选定节点转换为字符串
Using XDocument to convert selected node to string
我有以下 XML 示例。
<?xml version="1.0" encoding="utf-8"?>
<GlobalResponses>
<Filters>
<FilterId>11</FilterId>
<FilterId>5</FilterId>
<FilterId>10</FilterId>
</Filters>
<Responses>
<Response>
<Name>Bob</Name>
</Response>
<Response>
<Name>Jim</Name>
</Response>
<Response>
<Name>Steve</Name>
</Response>
</Responses>
</GlobalResponses>
使用 XDocument,我怎样才能只获取 <Responses>
父节点和子节点,并将它们转换为字符串变量。我查看了 XDocument 元素和后代,但调用 oXDocument.Descendants("Responses").ToString();
无效。
我是否必须遍历所有 XElements 检查每个 XElements 然后附加到字符串变量?
函数 Descendants
returns 枚举 XElement
,因此您需要 select 特定元素。
如果你想获得XML元素的所有子节点,你可以使用:
// assuming that you only have one tag Responses.
oXDocument.Descendants("Responses").First().ToString();
结果是
<Responses>
<Response>
<Name>Bob</Name>
</Response>
<Response>
<Name>Jim</Name>
</Response>
<Response>
<Name>Steve</Name>
</Response>
</Responses>
如果你想获取子节点并将它们连接成单个字符串,你可以使用
// Extract list of names
var names = doc.Descendants("Responses").Elements("Response").Select(x => x.Value);
// concatenate
var result = string.Join(", ", names);
结果是Bob, Jim, Steve
Descendants()
方法需要输入元素名称,它会 return 你的节点集合,然后你需要从这些节点中进一步获取你感兴趣的元素。
您可以使用 linq 和 XDocument
来提取信息。例如,以下代码从每个 Response
节点中提取 Name
元素值并打印出来:
var nodes = from response in Doc.Descendants("Response")
select response.Element("Name").Value;
foreach(var node in nodes)
Console.WriteLine(node);
上面的 Doc.Descendants("Response")
将获取所有 <Response>
元素,然后我们使用 response.Element("Name")
获取每个 <Response>
元素的 <Element>
标签,并且然后使用 .Value
属性 我们得到标签之间的值。
我有以下 XML 示例。
<?xml version="1.0" encoding="utf-8"?>
<GlobalResponses>
<Filters>
<FilterId>11</FilterId>
<FilterId>5</FilterId>
<FilterId>10</FilterId>
</Filters>
<Responses>
<Response>
<Name>Bob</Name>
</Response>
<Response>
<Name>Jim</Name>
</Response>
<Response>
<Name>Steve</Name>
</Response>
</Responses>
</GlobalResponses>
使用 XDocument,我怎样才能只获取 <Responses>
父节点和子节点,并将它们转换为字符串变量。我查看了 XDocument 元素和后代,但调用 oXDocument.Descendants("Responses").ToString();
无效。
我是否必须遍历所有 XElements 检查每个 XElements 然后附加到字符串变量?
函数 Descendants
returns 枚举 XElement
,因此您需要 select 特定元素。
如果你想获得XML元素的所有子节点,你可以使用:
// assuming that you only have one tag Responses.
oXDocument.Descendants("Responses").First().ToString();
结果是
<Responses>
<Response>
<Name>Bob</Name>
</Response>
<Response>
<Name>Jim</Name>
</Response>
<Response>
<Name>Steve</Name>
</Response>
</Responses>
如果你想获取子节点并将它们连接成单个字符串,你可以使用
// Extract list of names
var names = doc.Descendants("Responses").Elements("Response").Select(x => x.Value);
// concatenate
var result = string.Join(", ", names);
结果是Bob, Jim, Steve
Descendants()
方法需要输入元素名称,它会 return 你的节点集合,然后你需要从这些节点中进一步获取你感兴趣的元素。
您可以使用 linq 和 XDocument
来提取信息。例如,以下代码从每个 Response
节点中提取 Name
元素值并打印出来:
var nodes = from response in Doc.Descendants("Response")
select response.Element("Name").Value;
foreach(var node in nodes)
Console.WriteLine(node);
上面的 Doc.Descendants("Response")
将获取所有 <Response>
元素,然后我们使用 response.Element("Name")
获取每个 <Response>
元素的 <Element>
标签,并且然后使用 .Value
属性 我们得到标签之间的值。