基于此 SO 解決方案,將相同的命名空間添加到您的子節點將防止創建空xmlns=""屬性。我沒有得到空屬性,而是將根中的相同 xmlns 復制到子節點。
我當前的輸出:
<Root xmlns="http://my.namespace">
<FirstElement xmlns="http://my.namespace"/>
</Root>
預期輸出:
<Root xmlns="http://my.namespace">
<FirstElement/>
</Root>
分享我的代碼:
private XDocument CreateRootTag()
{
XNamespace xmlns = XNamespace.Get("http://my.namespace");
var xdec = new XDeclaration("1.0", "utf-8", "yes");
XDocument xml = new XDocument(
xdec,
new XElement(
xmlns "Root",
new XAttribute("version", "1.0"),
CreateFirstElementTag())); // <--- adding child node containing duplicate xmlns as root
return xml;
}
private XElement CreateFirstElementTag()
{
XNamespace xmlns = XNamespace.Get("http://my.namespace");
XElement firstElementTag = new XElement(xmlns "FirstElement","hello");
return firstElementTag;
}
如何防止xmlns="my.namespace"子節點中的持久屬性?
請讓我知道,如果你有任何問題。謝謝。
更新:
上面的代碼按預期作業,錯誤來自我。我通過首先構建我的 XML XDocument 然后添加屬性(例如:命名空間)來解決它。
uj5u.com熱心網友回復:
我按如下方式運行您的代碼。并且沒有遇到任何問題。
C#
void Main()
{
XDocument xdoc = CreateRootTag();
Console.WriteLine(xdoc);
}
private XDocument CreateRootTag()
{
XNamespace xmlns = XNamespace.Get("http://my.namespace");
var xdec = new XDeclaration("1.0", "utf-8", "yes");
XDocument xml = new XDocument(
xdec,
new XElement(
xmlns "Root",
new XAttribute("version", "1.0"),
CreateFirstElementTag())); // <--- adding child node containing duplicate xmlns as root
return xml;
}
private XElement CreateFirstElementTag()
{
XNamespace xmlns = XNamespace.Get("http://my.namespace");
XElement firstElementTag = new XElement(xmlns "FirstElement", "hello");
return firstElementTag;
}
輸出
<Root version="1.0" xmlns="http://my.namespace">
<FirstElement>hello</FirstElement>
</Root>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/474961.html
上一篇:在c#中將xml轉換為陣列
下一篇:使用XSLT洗掉XML中的父節點
