2017-06-07 6 views
0

誰が文以下、これら二つの違いは何か知っています:XDocument:.Root.Valueと.Root.ToStringの違い

xdoc.Root.Value; 

xdoc.Root.ToString(); 

私自身の研究から、私は最初の行がルートノードを削除し、 '\ r \ n'を '\ n'に置き換えているのに対して、2番目の行はコンテンツをオリジナルとして保持していることがわかります。私は正しいですか?それをバックアップするためのドキュメント? 最初の行を使用したいが、元のWindowsの新しい行を保持したいので、それを行う方法はありますか?

+0

だけのソースコードを調査します'XDocument.Root'が' XElement(XElement.Value) 'であるため、例えば[XElement.Value](https://referencesource.microsoft.com/#System.Xml.Linq/System/Xml/Linq/XLinq.cs,28102f706d70b3a2) 'type – Fabio

答えて

0

ドキュメントをお読みになりましたか?

Value

この要素のテキストコンテンツのすべてを含むString。複数のテキストノードがある場合、それらは連結されます。

ToString()

は、このノードのインデントXMLを返します。

+0

はい、キャリッジリターンの除去については言及していません – Frederic

+0

XMLは改行や​​その他の空白を無視します。 – SLaks

+0

さて、それはまだ\ nを保っているので、改行を完全に無視するわけではありません。 – Frederic

0

主な違いは、 ToString()には、ルート要素タグとインデント/タブが含まれています。
例:
<Root> <Child1>1</Child1> </Root>
一方、valueはありません。またそれは、タブを維持しない、それだけでルートタグ内のコンテンツを示して - それは子供のためではなく、ルート自身のためにあなたのタグを表示します。例えば :
<Child1>1</Child1>