根据客户的需求,我做出来的是这样的
private void button4_Click(object sender, EventArgs e)
{
int n = dataGridView1.Rows.Count;
string para1="";
try
{
XmlDocument pXmlDocument = new XmlDocument();
XmlDeclaration pXmlDeclaration = pXmlDocument.CreateXmlDeclaration("1.0", "gb2312", null);
pXmlDocument.AppendChild(pXmlDeclaration);
//加入一个根元素
XmlElement pElement = pXmlDocument.CreateElement("", "root", "");
pXmlDocument.AppendChild(pElement);
XmlNode pXmlRootNode = pXmlDocument.SelectSingleNode("root");//拿到根元素
//添加要素
XmlElement pXmlRootElement = pXmlDocument.CreateElement("Title");
XmlElement pXmlElement = pXmlDocument.CreateElement("DataModelCode");
pXmlElement.InnerText = "DMXXXX";
XmlElement pXmlElement1 = pXmlDocument.CreateElement("Version");
pXmlElement1.InnerText = "1.00";
XmlElement pXmlRootElement1 = pXmlDocument.CreateElement("MeasureContent");
XmlElement pXmlElement2 = pXmlDocument.CreateElement("MeasuringItem");
for (int i = 0; i < n-1; i++)
{
para1 = para1 + "<item Code=\"" + dataGridView1.Rows[i].Cells[0].Value.ToString() + "\" " +
"Name=\"" + dataGridView1.Rows[i].Cells[1].Value.ToString() + "\" " +
"Value=\"" + dataGridView1.Rows[i].Cells[2].Value.ToString() + "\" />" + "\r\n";
}
para1 = "<Item Code=\"JOBNAME\" Name=\"生产指令号\" Value=\"\">" + "\r\n" +
"<Item Code=\"SYSB\" Name=\"试验设备\" Value=\"\">" + "\r\n" + para1;
pXmlElement2.InnerText = para1;
pXmlRootElement.AppendChild(pXmlElement);
pXmlRootElement.AppendChild(pXmlElement1);
pXmlRootElement1.AppendChild(pXmlElement2);
pXmlRootNode.AppendChild(pXmlRootElement);
pXmlRootNode.AppendChild(pXmlRootElement1);
pXmlDocument.Save("C:\\Users\\Administrator\\Desktop\\##测试程序\\datagridview操作\\test\\bin\\XML.xml");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "提示");
}
}
使用
<![CDATA[content]]>
还有 innerXml 可以保留内容,但是保存 文件后需要用文本替换将外面的包装去掉
para1 = "<![CDATA[<hello >]]>";
pXmlElement2.InnerXml = para1;
package cn.com.webi.paycommon.base.javabase.util;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
import com.thoughtworks.xstream.io.xml.XmlFriendlyNameCoder;
/**
* Title: XstreamUtil<br>
* Description: XstreamUtil<br>
* Company:</br>
* CreateDate:2019年01月30日 10:14
*
* @author james.fxy
*/
public class XstreamUtil {
/**
* Title: 对象转换为xml<br>
* Description: objectToXml<br>
* CreateDate: 2019/1/30 10:16<br>
*
* @category 对象转换为xml
* @author james.fxy
* @param obj
* @return java.lang.String
* @exception Exception
*/
public static String objectToXml(Object obj) {
/**
* 双下划线转为单下划线
*/
XStream xStream = new XStream(new DomDriver("UTF-8", new XmlFriendlyNameCoder("-_", "_")));
// xstream使用注解转换
xStream.alias("xml", obj.getClass());
// 去除属性
xStream.autodetectAnnotations(true);
xStream.processAnnotations(obj.getClass());
return xStream.toXML(obj);
}
/**
* Title: xml转换为对象<br>
* Description: xmlToObject<br>
* CreateDate: 2019/1/30 10:16<br>
*
* @category xml转换为对象
* @author james.fxy
* @param xml
* * @param cls
* @return T
* @exception Exception
*/
public static <T> T xmlToObject(String xml, Class<T> cls) {
XStream xstream = new XStream(new DomDriver());
xstream.alias("xml", cls);
// xstream使用注解转换
xstream.processAnnotations(cls);
// 去除属性
xstream.autodetectAnnotations(true);
return (T) xstream.fromXML(xml);
}
}
首先,根据客户需求,我们需要修改XML文件中的特定部分。根据参考资料的示例代码,我们可以使用Dom4j解析器来读取和修改XML文件。
步骤1:读取XML文件
// 创建解析器对象
SAXReader saxReader = new SAXReader();
// 使用解析器读取XML文档,生成Document对象
Document document = saxReader.read(new File("path/to/your/xml/file.xml"));
这里将路径替换为你实际的XML文件路径。
步骤2:定位到需要修改的元素 根据XML结构,找到需要修改的部分。假设我们需要修改第一个book的name为"修罗武神",我们可以使用元素的名称和属性值来定位到该元素。
// 获取根元素
Element rootElement = document.getRootElement();
// 根据元素名称获取指定元素(有多个的话就获取第一个)
Element book = rootElement.element("book");
// 根据元素的属性值获取指定元素
Element book1 = rootElement.elementByID("001");
请注意,这里"001"是我们假设的book元素的id属性值,根据实际情况修改。
步骤3:修改元素的内容 使用元素的方法来修改元素的内容。
// 修改第一个book元素下的name子元素的文本值
Element nameElement = book.element("name");
nameElement.setText("修罗武神");
步骤4:保存修改后的XML文件
// 创建输出流
Writer writer = new FileWriter("path/to/your/modified/xml/file.xml");
// 创建格式化器
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
// 创建XMLWriter对象
XMLWriter xmlWriter = new XMLWriter(writer, format);
// 写入修改后的Document对象
xmlWriter.write(document);
// 关闭资源
xmlWriter.close();
writer.close();
将路径替换为你希望保存修改后的XML文件的路径。
以上是一个基本的步骤来修改XML文件以满足客户需求。请根据实际情况做相应的修改。
如果你有任何问题或需要进一步的帮助,请随时告诉我。
这段代码是一个按钮的点击事件处理程序,它将DataGridView中的数据保存为一个XML文件。
首先,代码创建了一个XmlDocument对象,并创建了一个根元素"root"。然后,通过循环遍历DataGridView的行,构建一个字符串para1,其中包含了一些XML元素的数据。最后,将这些数据添加到XmlDocument对象中的适当位置。
接下来,代码创建了一些XmlElement对象,并设置它们的InnerText为相应的值。然后,将这些XmlElement对象添加到XmlDocument对象的根元素和子元素中。
最后,代码使用XmlDocument的Save方法将XML文档保存到指定的文件路径。
需要注意的是,代码中使用了一些固定的字符串作为XML元素的名称和值,你可以根据实际需求进行修改。
在try-catch块中,如果发生异常,将显示一个提示框,显示异常信息。
请确保你已经导入了相应的命名空间,并将按钮的Click事件与此方法关联。