gpt4 book ai didi

c# - 使用 XmlNamespaceManager 将命名空间添加到 XmlDocument

转载 作者:数据小太阳 更新时间:2023-10-29 01:47:11 28 4
gpt4 key购买 nike

我正在尝试使用 XmlNamespaceManager 将 namespace 添加到 XmlDocument。这是当前的 xml:

<?xml version="1.0"?>
<kml>
<Document>
<Placemark>
</Placemark>
</Document>
</kml>

我希望它转换为这个 xml(使用 XmlNamespaceManager):

<?xml version="1.0"?>
<kml xmlns="http://www.opengis.net/kml/2.2"
xmlns:gx="http://www.google.com/kml/ext/2.2"
xmlns:kml="http://www.opengis.net/kml/2.2"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Document>
<Placemark>
</Placemark>
</Document>
</kml>

但我无法更改 xml。这是代码,我知道它应该很容易修复:

public void addXmlns()
{

string xml = @"<?xml version=""1.0""?>
<kml>
<Document>
<Placemark>
</Placemark>
</Document>
</kml>";

var xmldoc = new XmlDocument();

xmldoc.LoadXml(xml);

XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmldoc.NameTable);

//Add the namespaces
nsmgr.AddNamespace("", "http://www.opengis.net/kml/2.2");
nsmgr.AddNamespace("gx", "http://www.google.com/kml/ext/2.2");
nsmgr.AddNamespace("kml", "http://www.opengis.net/kml/2.2");
nsmgr.AddNamespace("atom", "http://www.w3.org/2005/Atom");
nsmgr.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");

string message;
message = xmldoc.InnerXml;

MessageBox.Show(message); // still shows the original xml

}

提前致谢

更新#1 - 试过这个但它也没有改变 XML:

public void addXmlns()
{

string xml = @"<?xml version=""1.0""?>
<kml>
<Document>
<Placemark>
</Placemark>
</Document>
</kml>";

var xmldoc = new XmlDocument();

xmldoc.LoadXml(xml);

XmlSchema schema = new XmlSchema();
schema.Namespaces.Add("", "http://www.opengis.net/kml/2.2");
schema.Namespaces.Add("gx", "http://www.google.com/kml/ext/2.2");
schema.Namespaces.Add("kml", "http://www.opengis.net/kml/2.2");
schema.Namespaces.Add("atom", "http://www.w3.org/2005/Atom");
schema.Namespaces.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");
xmldoc.Schemas.Add(schema);

string message;
message = xmldoc.InnerXml;

MessageBox.Show(message); // still shows the original xml

}

最佳答案

解决方案:这终于奏效了:

public void addXmlns()
{
string xml = @"<?xml version=""1.0""?>
<kml>
<Document>
<Placemark>
</Placemark>
</Document>
</kml>";

var xmldoc = new XmlDocument();

xmldoc.LoadXml(xml);

xmldoc.DocumentElement.SetAttribute("xmlns", "http://www.opengis.net/kml/2.2");
xmldoc.DocumentElement.SetAttribute("xmlns:gx", "http://www.google.com/kml/ext/2.2");
xmldoc.DocumentElement.SetAttribute("xmlns:kml", "http://www.opengis.net/kml/2.2");
xmldoc.DocumentElement.SetAttribute("xmlns:atom", "http://www.w3.org/2005/Atom");
xmldoc.DocumentElement.SetAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");

string message;
message = xmldoc.InnerXml;

MessageBox.Show(message); // shows the updated xml
}

关于c# - 使用 XmlNamespaceManager 将命名空间添加到 XmlDocument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20659248/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com