<div xmlns="http://www.com">
<div class="child">
</div>
</div>
xpath と do を使用して子要素を取得すると.ToString()
、親の名前空間が追加されます。冗長な名前空間を含まないコンテンツを取得するにはどうすればよいですか?
<div xmlns="http://www.com">
<div class="child">
</div>
</div>
xpath と do を使用して子要素を取得すると.ToString()
、親の名前空間が追加されます。冗長な名前空間を含まないコンテンツを取得するにはどうすればよいですか?
この拡張メソッドを使用できます。名前空間のない子を含む別のXElementを再帰的に作成します。拡張メソッドは静的クラス内に配置する必要があります。
public static XElement IgnoreNamespace(this XElement xelem)
{
XNamespace xmlns = "";
var name = xmlns + xelem.Name.LocalName;
return new XElement(name,
from e in xelem.Elements()
select e.IgnoreNamespace(),
xelem.Attributes()
);
}
static void Main(string[] args)
{
var document = XDocument.Parse("<?xml version=\"1.0\" ?><div xmlns=\"http://www.ya.com\"><div class=\"child\"></div></div>");
var first = document.Root.Elements().First().IgnoreNamespace();
Console.WriteLine(first.ToString());
}