> #修改xml声明只保留版本<?xml version="1.0" ?>,空节点不能换行要求保留<read></read>。目前声明多余 encoding="ytf-8"

#修改xml文件时,我想要声明只保留版本,而且空节点不能换行要求保留。

<?xml version="1.0" ?>
<read></read>
XmlDocument myXmlDoc = new XmlDocument();
myXmlDoc.Load(FilePathName);
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/553980406586185.jpg "#left")

   ////修改/////
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = "   ";
settings.Encoding = Encoding.UTF8;
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/09738930658611.jpg "#left")

using (XmlWriter xmlWriter = XmlWriter.Create(FilePathName, settings))
{
    myXmlDoc.Save(xmlWriter);
}
参考链接:https://blog.csdn.net/qq_26431385/article/details/115861466?spm=1001.2014.3001.5502

#使用软件VS2015

以下代码来修改 XML 声明只保留版本,同时保留空节点:

<?xml version="1.0"?>
<read></read>
import xml.etree.ElementTree as ET

tree = ET.parse('your_file.xml')
root = tree.getroot()

# 修改 XML 声明只保留版本
root.attrib.pop('encoding')

# 保留空节点
for elem in root.iter():
    if elem.text is None:
        elem.text = ''

tree.write('your_file.xml', encoding='utf-8', xml_declaration=True)


把settings.Encoding=Encoding.UTF8;注释掉。

  • 以下回答由chatgpt基于相关博客总结生成:

    我可以提供以下解决方案:

    1. 使用Python中的ElementTree模块来读取XML文件,并定位到XML声明中的encoding属性,然后将其删除。 以下是代码示例:
    import xml.etree.ElementTree as ET
    
    # 载入XML文件
    tree = ET.parse('example.xml')
    root = tree.getroot()
    
    # 获取XML声明,并删除encoding属性
    xml_declaration = tree._root.attrib.pop('encoding', None)
    
    # 保存修改后的XML文件
    tree.write('modified.xml')
    
    1. 修改空节点的处理方式,将其设置为在同一行输出。 以下是代码示例:
    import xml.dom.minidom as minidom
    
    # 载入XML文件
    doc = minidom.parse('example.xml')
    
    # 修改空节点输出方式
    doc.documentElement.writexml(open('modified.xml', 'w'),
                                 addindent='    ',
                                 newl='')
    

    需要注意的是,XML中的空节点(即没有子节点的元素)应该使用自闭合标签形式表示,例如<read/>,而不是<read></read>。若要保留使用后者的代码,可以在修改空节点输出方式时特别判断处理一下。

把多余得删了

\ 你可以按照以下步骤修改XML文件并满足你的要求:

  1. 加载XML文件: 使用XmlDocument类加载XML文件,就像你在提供的代码中所做的那样:
    XmlDocument myXmlDoc = new XmlDocument();
     myXmlDoc.Load(FilePathName);
     
  2. 修改XML声明: 如果你只想保留XML版本声明,并且不想保留空节点的换行,你可以将XmlWriterSettings的一些属性设置为特定的值。在你的代码中添加以下行:
    settings.Indent = false;  // 不缩进
     settings.NewLineHandling = NewLineHandling.None;  // 不换行
     
  3. 保存修改后的XML文件: 使用XmlWriter.Create()方法创建一个XmlWriter对象,并传递修改后的FilePathName和设置(settings)。然后使用myXmlDoc.Save()方法将修改后的XML保存到文件中。修改后的代码如下所示:
    using (XmlWriter xmlWriter = XmlWriter.Create(FilePathName, settings))
     {
         myXmlDoc.Save(xmlWriter);
     }
     

这样,你就可以通过以上步骤修改XML文件,只保留版本声明,并且空节点不会换行。

参考链接中的文章也提供了类似的代码示例,你可以参考该链接获取更多详细信息。

\