XElement root = XElement.Load(xmlReader);
IEnumerable<XElment> items = root.Elements("?????????");
パスを追加することはできますか、それとも単一のxml要素名でなければなりませんか?IEnumerableをロードする<XElement>コレクション
ie。/blah/blah2/asdfすることはできますか?
XElement root = XElement.Load(xmlReader);
IEnumerable<XElment> items = root.Elements("?????????");
パスを追加することはできますか、それとも単一のxml要素名でなければなりませんか?IEnumerableをロードする<XElement>コレクション
ie。/blah/blah2/asdfすることはできますか?
あなたは、この例外が発生しますXPathを渡ししようとする場合は、次のタイプ 「System.Xml.XmlException」が
未処理の例外が System.Xml.dll
で発生しました追加情報: '/' 文字、16進値0x2F、 は名前に含めることはできません。
要素名を文字列として渡す必要があります。その文字列は、XName
タイプに暗黙的に変換され、文字列内の文字とその文字列(/
、<
、>
など)の制限があります。
いいえ、Element拡張メソッドのパラメータは、単一の要素名(実際にはXNameですが、名前空間が不要な場合は要素名を文字列として渡す必要があります)ではなく、XPathでなければなりません。
XPathを使用してXElementsを選択する場合は、an extension method for thatもあります。 System.Xml.XPathを含めると、次のようになります。
IEnumerable<XElement> items = root.XPathSelectElements("your/xpath");
????は単一のxml要素名にする必要があります。
厳密には、Elements()
のメソッドはXName
引数を受け入れます。幸いにも、からXName
への暗黙の変換があります。
XName name = "Book";
XName name2 = "{http://schemas.company.com/books}Book"; // XName with a namespace
System.Xml.XPath
名前空間(System.Xml.Linq
アセンブリ)から拡張メソッドを使用して、パスを選択するには:
IEnumerable<XElment> items = root.XPathSelectElements("Books/Author");