2

我有一个 XML:

<?xml version="1.0" encoding="UTF-8"?>
<ticket>
    <comments type="array">
         <comment> 
               <attachments type="array">
                     <attachment>
                          <url>I NEED WHATEVER IS IN HERE</url>
                     </attachment>
               </attachments>
         </comment>
         <comment>
               <attachments type="array">
                     <attachment>
                          <url>I NEED WHATEVER IS IN HERE</url>
                     </attachment>
               </attachments>
         <comment>
     </comments>
</ticket>

我将如何获取 URL 标记内的任何内容并将其添加到<List>? 我正在使用 C#。

4

3 回答 3

3

利用:

var result = XDocument.Parse(inputXml)
    .DescendantNodes().OfType<XText>().Select(e => e.Value).ToList();

或使用 XPath:

var result = ((IEnumerable)XDocument.Parse(input).XPathEvaluate("//text()"))
    .Cast<XText>().ToList();

要仅从url元素中检索文本,请使用:

var result = XDocument.Parse(inputXml)
        .Descendants("url").Select(e => e.Value).ToList();

或更改以上 XPath://url/text()

于 2012-11-08T00:46:43.533 回答
2
using (StringReader sr = new StringReader(xml_content))
{
    XDocument xdoc = XDocument.Load(sr);

    IList<string> values = xdoc.XPathSelectElements("ticket/comments/attachments/url").Select(e => e.Value).ToList();
}

或者,根据您评论中的用例:

var doc = new XmlDocument();
doc.LoadXml(xml_content);
IList<string> values = doc.SelectNodes("ticket/comments/attachments/url")
    .Cast<XmlElement>().Select(e => e.InnerText).ToList();
于 2012-11-08T00:46:26.753 回答
0

或者你可以使用 var values = xdoc.SelectSingleNode("ticket/comments/attachments/url").InnerXml;

于 2013-11-06T02:29:17.883 回答