2014-01-29 38 views
6

我很难从XElement的内文中获取正确的值。首先,这里是我正在使用的XML。这是我们的工作流程中产生的生产数据的副本。换句话说,我不能改变XML,我只能解析它。我希望获得的无限文本元素里面的数据看起来像XML,但事实并非如此。这是来自生成XML的工具的直接文本。该元素被称为<creatorshapeutildata来自XElement的Innertext?

Picture of XML data

这里是代码行我已经试过:

CreatorShapeUtilData = element.Descendants("creatorshapeutildata").Single().Value; 

我也试过这样:

CreatorShapeUtilData = element.Descendants("creatorshapeutildata").First().Value; 

我已经也试过这个:

CreatorShapeUtilData = element.Element("creatorshapeutildata").Value; 

不幸的是,被在任何情况下返回的值是这样的:

33012-1true#FFFF003#FFFFFF2743337743358

我需要返回的值看起来像这样:

"<creatorData type="object"><type type="int">33012</type>..." 

这片我的工作是是使用XDocument,XElement等的更大程序的一部分。我知道XmlElement具有InnerText属性,但我认为XElement没有,因为我似乎无法在Intellisense中找到它。

那么,有没有什么可能的方法来抓取creatorshapeutil标签之间的确切文本?

回答

17

您正试图获得与原始XML内容完全相反的属性:原始XML内容。

您可以通过拨打element.ToString()来获取包括外部节点在内的内容。

如果你想排除外部标签,你可以拨打String.Concat(element.Nodes())