8 Stimmen

Ermitteln des Standard-Namespace-URI aus einem XML-Dokument in C#

In einigen anderen Fragen wurde gefragt, wie man Xpath zur Abfrage von XML-Dokumenten mit einem Standard-Namensraum verwenden kann. Die Antwort ist, einen Namespace-Manager zu verwenden, um einen Alias für den Standard-Namespace zu erstellen, und diesen Alias in den Xpaths zu verwenden.

Was aber, wenn Sie den URI des Standard-Namensraums nicht im Voraus kennen? Wie können Sie ihn aus dem XML-Dokument herausfinden?

15voto

Muhammad Hasan Khan Punkte 33714
var doc = XDocument.Parse(myXml);
XNamespace ns = doc.Root.GetDefaultNamespace();

4voto

username Punkte 3178

Wenn Sie XmlDocument verwenden, können Sie den Standard-Namespace ermitteln, indem Sie NamespaceURI des Root-Elements überprüfen:

var document = new XmlDocument();
document.LoadXml("<root xmlns='http://java.sun.com/xml/ns/j2ee'></root>");
var defaultNamespace = document.DocumentElement.NamespaceURI;
Assert.IsTrue(defaultNamespace == "http://java.sun.com/xml/ns/j2ee");

0voto

Polynomial Punkte 26610

Sie könnten versuchen XmlNamespaceManager.DefaultNamespace um es zu bekommen.

http://msdn.microsoft.com/en-us/library/system.xml.xmlnamespacemanager.defaultnamespace.aspx

0voto

Droa Punkte 367

Ich weiß, dies ist ein altes Thema, aber ich hatte das gleiche Problem, mit der XmlDocument-Klasse, wie ich den Standard-Namensraum und einen vorangestellten Namespace wissen wollte.

Ich konnte beide Namensräume mit der gleichen Methode erhalten.

string prefixns = element.GetNamespaceOfPrefix("prefix");
string defaultns = element.GetNamespaceOfPrefix("");

Dies scheint für mich immer beide Namespaces auf ein XmlElement zu arbeiten.

Bearbeiten: Dies ist eine XmlNode-Methode, sollte also auch bei Attributen funktionieren

0voto

Faris Kapo Punkte 340

Die einfachste Art, dies zu tun

XmlDocument xDoc = new XmlDocument();
xDoc.Load(uriPath);
Console.WriteLine(xDoc.NamespaceURI);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X