這可能是重複的,因爲我的問題看起來很瑣碎,但我一直無法在stackoverflow.com找到答案。C#:如何從字符串XElement獲取名稱(帶前綴)?
我有一個的XElement有這樣的數據:
<abc:MyElement>My value</abc:MyElement>
問: 如何用前綴得到完整的名字從的XElement字符串?
預期結果:
abc:MyElement
這可能是重複的,因爲我的問題看起來很瑣碎,但我一直無法在stackoverflow.com找到答案。C#:如何從字符串XElement獲取名稱(帶前綴)?
我有一個的XElement有這樣的數據:
<abc:MyElement>My value</abc:MyElement>
問: 如何用前綴得到完整的名字從的XElement字符串?
預期結果:
abc:MyElement
是否string.Format("{0}:{1}", XElement.Prefix, XElement.Name)
不行?
XNamespace ci = "http://foo.com";
XElement myElement = new XElement(ci + "MyElement", "MyValue");
XElement rootElement = new XElement("root",
new XAttribute(XNamespace.Xmlns + "abc", ci), myElement);
var str = myElement.ToString();
Console.WriteLine(str);
打印
<abc:MyElement xmlns:abc="http://foo.com">MyValue</abc:MyElement>
我試圖讓我的問題更清楚。我只想要前綴和元素名稱('abc:MyElement') - 不是具有名稱空間和值的整個元素。 – Chau
我沒有使用相同的對象,你是正確的。與LINQ namesapce您的解決方案是:
using System.Xml.XPath; // <-- Add this namespace.
XNamespace ci = "http://foo.com";
XElement root = new XElement(ci + "Root", new XAttribute(XNamespace.Xmlns + "abc", "http://foo.com"));
XElement childElement = new XElement(ci + "MyElement", "content");
root.Add(childElement);
var str = childElement.XPathEvaluate("name()"); // <-- Tell Xpath to do the work for you :).
Console.WriteLine(str);
打印
abc:MyElement
我的解決方案迄今已使用在XElement
可用的方法GetPrefixOfNamespace
。
雖然不是一個漂亮的解決方案,它給了我什麼,我想:
XElement xml = new XElement(...);
string nameWithPrefix = xml.GetPrefixOfNamespace(xml.Name.Namespace) +
":" +
xml.Name.LocalName;
更優雅的解決方案是非常歡迎的。
這將返回的XElement前綴:
myElement.GetPrefixOfNamespace(node.Name.Namespace);
我'XElement'上沒有任何屬性'Prefix'。這將是一個非常好的解決方案,如果我雖然:) – Chau
你使用哪個版本的框架? [MSDN](http://www.google.com/url?sa=t&source=web&cd=1&sqi=2&ved=0CBoQFjAA&url=http%3A%2F%2Fmsdn.microsoft.com%2Fen-us%2Flibrary%2Fsystem.xml。 linq.xelement.aspx&ei = UVz_TZrfIKTViAKB5oiOBQ&usg = AFQjCNEv3mDy6Q_VL7I6P_fn3f4CEnAqhg&sig2 = O1rNLKqaMVCmNxFJyYlu4g)顯示它具有該屬性。 – therealmitchconnors
你能指引我嗎?我找不到屬性/方法'前綴'。我可以找到'公共字符串GetPrefixOfNamespace(XNamespace ns)'方法,到目前爲止我已經使用那個給我的前綴。 – Chau