#修改xml文件时,我想要声明只保留版本,而且空节点不能换行要求保留。
<?xml version="1.0" ?>
<read></read>
XmlDocument myXmlDoc = new XmlDocument();
myXmlDoc.Load(FilePathName);

////修改/////
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = " ";
settings.Encoding = Encoding.UTF8;

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;注释掉。
我可以提供以下解决方案:
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')
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文件并满足你的要求:
XmlDocument
类加载XML文件,就像你在提供的代码中所做的那样:XmlDocument myXmlDoc = new XmlDocument();
myXmlDoc.Load(FilePathName);
XmlWriterSettings
的一些属性设置为特定的值。在你的代码中添加以下行:settings.Indent = false; // 不缩进
settings.NewLineHandling = NewLineHandling.None; // 不换行
XmlWriter.Create()
方法创建一个XmlWriter
对象,并传递修改后的FilePathName
和设置(settings
)。然后使用myXmlDoc.Save()
方法将修改后的XML保存到文件中。修改后的代码如下所示:using (XmlWriter xmlWriter = XmlWriter.Create(FilePathName, settings))
{
myXmlDoc.Save(xmlWriter);
}
这样,你就可以通过以上步骤修改XML文件,只保留版本声明,并且空节点不会换行。
参考链接中的文章也提供了类似的代码示例,你可以参考该链接获取更多详细信息。
\