3
<div xmlns="http://www.com">
  <div class="child">
  </div>
</div>

xpath と do を使用して子要素を取得すると.ToString()、親の名前空間が追加されます。冗長な名前空間を含まないコンテンツを取得するにはどうすればよいですか?

4

3 に答える 3

3

この拡張メソッドを使用できます。名前空間のない子を含む別の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());
}
于 2012-07-13T07:53:01.737 に答える