2014-01-29 1 views
6

Мне сложно получить правильное значение из внутреннего текста XElement. Во-первых, вот XML, который я использую. Это копия наших производственных данных, которая является результатом процесса в нашем рабочем процессе. Другими словами, я не могу изменить XML, я могу только разобрать его. Элемент, внутренний текст которого я хотел бы получить, имеет данные внутри, которые выглядят как XML, но это не так. Это прямой текст из инструмента, создавшего XML. Элемент называется <creatorshapeutildata:Внутренний текст от XElement?

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

Вы пытаетесь получить точную противоположность свойствам InnerText/Value: необработанный XML-контент.

Вы можете получить контент, включая внешний узел, по телефону element.ToString().

Если вы хотите исключить внешний тег, вы можете позвонить String.Concat(element.Nodes()).