I am releasin...">

Change xml namespace

I have an xml file:

<?xml version="1.0" encoding="utf-8"?>
<ABC version="1" xmlns="urn:Company">
</ABC>

I am releasing version 2, and the namespace has been changed to "NewCompany". How do you update the namespace?

I tried

XmlDocument xmlDocument = new XmlDocument (); using (XmlReader xmlReader = XmlReader.Create ("myfile.xml")) {xmlDocument.Load (XMLReader); }

        XmlNodeList nodeList = xmlDocument.GetElementsByTagName("ABC");
        if (nodeList.Count == 1)
        {
            XmlElement element = nodeList.Item(0) as XmlElement;
            if (element != null)
            {
                element.SetAttribute("xmlns", "NewCompany");

                XmlWriterSettings settings = new XmlWriterSettings();
                settings.Indent = true;
                using (XmlWriter writer = XmlWriter.Create("myfile.xml", settings))
                {
                    xmlDocument.WriteTo(writer);
                }
            }
        }

But I get the "Prefix" cannot be redefined with the same tag of the launch item. "Exception

+3
source share
1 answer

I ran into this today and found a workaround. If you use XmlTextWriter instead of XmlWriter, the problem goes away. An example of your code would look something like this:

    XmlNodeList nodeList = xmlDocument.GetElementsByTagName("ABC");
    if (nodeList.Count == 1)
    {
        XmlElement element = nodeList.Item(0) as XmlElement;
        if (element != null)
        {
            element.SetAttribute("xmlns", "NewCompany");

            using (XmlTextWriter writer = new XmlTextWriter("myfile.xml", Encoding.UTF8))
            {
                writer.Formatting = Formatting.Indented;
                xmlDocument.WriteTo(writer);
            }
        }
    }

, XmlWriter.Create XmlTextWriter, , , . Reflector XmlWriter.Create, , , XmlTextWriter.

XmlTextWriter, , , , XmlWriter.Create, .

, , , , -.

0

Source: https://habr.com/ru/post/1723923/


All Articles