获取XML子元素和内容作为文本

时间:2013-10-11 03:27:23

标签: c# xml linq

我有一个完整的XML文档,我使用LINQ to XML成功导航。我有一个包含HTML的子节点,我希望将子节点的全文作为字符串。

...
<p>
  this is sample text in <italic>italic</italic> and in <bold>bold</bold>.
</p>
...

var text = node.Element("p").Value返回this is sample text in italic and in bold.

var text = node.Element("p").ToString()返回<p>this is sample text in <italic>italic</italic> and in <bold>bold</bold>.</p>

我真正想要的是this is sample text in <italic>italic</italic> and in <bold>bold</bold>.

什么方法会将内部文本与内部标记一起作为字符串返回?我不想要外<p>标记。

2 个答案:

答案 0 :(得分:1)

var reader = node.Element("p").CreateReader();
reader.MoveToContent();
var inerXml = reader.ReadInnerXml();

OR

var inerXml = string.Concat(node.Element("p").Nodes().Select(x => x.ToString()).ToArray());

答案 1 :(得分:1)

试试这个: -

您可以直接使用innerXml属性将p标记的内容作为xml。

namespace XML_Reader
{
    class Program
    {
        static void Main(string[] args)
        {
            XmlDocument xdoc = new XmlDocument();
            xdoc.Load("test.xml");
            XmlNode elem = xdoc.DocumentElement.FirstChild;

            Console.WriteLine(elem.InnerXml);       
        }
    }
}

<强> XML: -

<element>
  <p>
    this is sample text in <italic>italic</italic> and in <bold>bold</bold>.
  </p>
</element>

<强>输出: -

  this is sample text in <italic>italic</italic> and in <bold>bold</bold>.