になり
static void Main()
{
string value = "Steet,<BR> </BR> City";
XElement address = new XElement("Address", ParseFragment(value));
Console.WriteLine(address);
}
static IEnumerable<XNode> ParseFragment(string fragment)
{
using (StringReader sr = new StringReader(fragment))
{
using (XmlReader xr = XmlReader.Create(sr, new XmlReaderSettings() { ConformanceLevel = ConformanceLevel.Fragment }))
{
xr.Read();
XNode node;
while (!xr.EOF && (node = XNode.ReadFrom(xr)) != null)
{
yield return node;
}
}
}
}
は、私はあなたが何も変更する必要はないと思います。 <
と>
は、角括弧がXMLでエスケープされる方法です。 XMLパーサは、文字列値を読み取るときに自動的にリテラルな角括弧に変換します。 CDATAは、かぎ括弧をエスケープする別の方法です。この場合、両方ともまったく同じことを達成します。元のコードを取り、<Address>
ノードの値をXMLパーサで読み取ると、返される文字列はStreet,<BR> </BR> City
になります。 CDATAにエスケープする方法を変更しても、あなたのXMLを(おそらく)読みにくくすることを除いて、実際には何も変更されません。
<BR />
タグを実際にXML文書の一部にしたい場合は、そのタグを文書の一部にする必要があります。言い換えれば...
new XElement("Address", "Street,", new XElement("BR"), " City")
Martinに感謝します。私が新しい投票をしているので、1だけ増やすことができます。この例でもう一度おねがいします。 – dps123
これは実際には元のバージョンと機能的に同じです。 '<'を '<'またはCDATAでエスケープするかどうかは関係ありません。いずれにしても、XMLパーサを使って '
'ノードの値を読むと、その中にリテラルな角括弧を持つ文字列が得られます。 –こんにちはJoel、お返事ありがとうございます。このXMLはPDFファイルの生成に使用されます。したがって、PDF Creationのメンバーはタグを期待しているため、そのツールでマップすることができます。例えば、(
=> PDF改行) – dps123