Ⅰ python 怎麼修改xml文件內容
類似於:
#!/usr/bin/evnpython
#coding:utf-8
try:
importxml.etree.cElementTreeasET
exceptImportError:
importxml.etree.ElementTreeasET
importsys
try:
tree=ET.parse("country.xml")#打開xml文檔
#root=ET.fromstring(country_string)#從字元串傳遞xml
root=tree.getroot()#獲得root節點
exceptException,e:
print"Error:cannotparsefile:country.xml."
sys.exit(1)
printroot.tag,"---",root.attrib
forchildinroot:
printchild.tag,"---",child.attrib
print"*"*10
printroot[0][1].text#通過下標訪問
printroot[0].tag,root[0].text
print"*"*10
forcountryinroot.findall('country'):#找到root節點下的所有country節點
rank=country.find('rank').text#子節點下節點rank的值
name=country.get('name')#子節點下屬性name的值
printname,rank
#修改xml文件
forcountryinroot.findall('country'):
rank=int(country.find('rank').text)
ifrank>50:
root.remove(country)
tree.write('output.xml')
給你推薦一篇文章看看吧:
http://python.jobbole.com/82775/
Ⅱ C# 讀取修改xml文件
讀取XML:
XmlDocument doc= new XmlDocument();
doc.Load("c:\\aa.xml");
string path="ntsc/time/day";
XmlNode node= doc.SelectSingleNode(path);
string text=node.InnerText;//這個就是你的要的值了.
修改:
XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//獲取bookstore節點的所有子節點
foreach(XmlNode xn in nodeList)//遍歷所有子節點
{
XmlElement xe=(XmlElement)xn;//將子節點類型轉換為XmlElement類型
if(xe.GetAttribute("name")=="ApplePrice")
{
xe.SetAttribute("value","32");//32為修改後的值
break;
}
}
xmlDoc.Save("bookstore.xml");//保存。
Ⅲ 如何用shell腳本修改XML文件
通過shell腳本修改xml文件中的某行記錄
跟之前一樣,假設有如下的xml文件:
web.xml中有如下內容:
[html] view plain
cookieName
sessionName
需求:現在需要利用shell腳本替換掉cookieName對應的value值,
利用shell實現方式如下:
shell腳本部分:
declare -i Dline
getline()
{
grep -n "cookieName" ${DOMAIN_HOME}/portal/ROOT/WEB-INF/web.xml | head -1 |
cut -d ":" -f 1;
}
getlinenum()
{
awk "BEGIN{a=`getline`;b="1";c=(a+b);print c}";
}
Dline=`getlinenum`;
echo "line is ${Dline}";
sed -i "${Dline},${Dline}s/.*/ \替換的value值\<\/param-value\>/g"
path/web.xml
說明:這個跟之前的替換屬性文件的區別在於,這個是精確定位到行的,然後替換正行code。
這個xml和properties 中都是默認需要替換的內容是唯一的。
Ⅳ 如何修改後綴為XML格式的文件(正確給200分)
這個你可以將它用記事本打開,再將修改<OptionRef Id="AlwaysInstalled"/>為 <OptionRef Id="NeverInstalled"/>
修改下一段中AlwaysInstalled為NeverInstalled保存關閉
但是可能你會遇到問題 他可能會提醒需要許可權,再後來可能出現路徑不對不能修改,(這是我遇到的問題)
如果是這種問題,我建議,你最好先將它剪切到桌面,在打開(記得是記事本打開),再修改,後再復制到C:\ProgramFiles\CommonFiles\MicrosoftShared\OFFICE12\OfficeSetup Controller\Proof.en文件下代替原來的哪個,不要存在兩個哦!我像這樣就可以了。
但是我可是遇到問題了,因為網上的這種結果可能不適合你,當你的office07到了兩個月試用期後,照樣不能正常使用,我建議最好,重新安裝一個office。
好了,祝你好運!
Ⅳ 怎麼用C語言寫一個簡單的XML文件
用VC吧,下面有一個例子,你參照下:
voidCreateXml()
{
CoInitialize(NULL);
//創建文檔
MSXML2::IXMLDOMDocument2PtrpXMLDoc=NULL;
//創建DOMDocument對象
HRESULThr=pXMLDoc.CreateInstance(__uuidof(MSXML2::DOMDocument));
if(!SUCCEEDED(hr))
{
return;
}
//
MSXML2::=NULL;
pXMLProc=pXMLDoc->createProcessingInstruction("xml","version='1.0'encoding='UTF-8'");
_variant_tvNullVal;
vNullVal.vt=VT_NULL;
pXMLDoc->insertBefore(pXMLProc,vNullVal);
//創建根結點
_variant_tvarNodeType((short)MSXML2::NODE_ELEMENT);
MSXML2::IXMLDOMNodePtrpXMLNodeRoot=NULL;
pXMLNodeRoot=pXMLDoc->createNode(varNodeType,_T("Cases"),_T(""));
//添加根結點
pXMLDoc->appendChild(pXMLNodeRoot);
//創建並添加下級結點
MSXML2::IXMLDOMNodePtrpXMLNodeNode=NULL;
pXMLNodeNode=pXMLNodeRoot->appendChild(pXMLDoc->createElement(_T("Case")));
//創建下級元素結點
MSXML2::IXMLDOMElementPtrpXMLEle=NULL;
pXMLEle=pXMLDoc->createElement(_T("CopyFile"));
//創建並設置下級結點屬性
MSXML2::IXMLDOMAttributePtrpXMLAttr=NULL;
pXMLAttr=pXMLDoc->createAttribute(_T("src"));
pXMLAttr->nodeTypedValue="C:\test.txt";
pXMLEle->attributes->setNamedItem(pXMLAttr);
pXMLAttr=pXMLDoc->createAttribute(_T("dest"));
pXMLAttr->nodeTypedValue="D:\Test.txt";
pXMLEle->attributes->setNamedItem(pXMLAttr);
//添加元素結點
pXMLNodeNode->appendChild(pXMLEle);
MSXML2::IXMLDOMElementPtrpXMLEle1=NULL;
pXMLEle1=pXMLDoc->createElement(_T("DelFile"));
pXMLEle1->appendChild(pXMLDoc->createTextNode("C:\test.txt"));
//添加元素結點
pXMLNodeNode->appendChild(pXMLEle1);
//保存文檔
pXMLDoc->save(_T("d:\Test.xml"));
}
效果如下:
<?xmlversion="1.0"encoding="UTF-8"?>
<Cases>
<Case>
<CopyFilesrc="C: est.txt"dest="D:Test.txt"/>
<DelFile>C: est.txt</DelFile>
</Case>
</Cases>
為了能夠讓MFC認識MSXML2,我們需要引入相應的dll,代碼如下;
#import "msxml4.dll"
Ⅵ C++發送某個指令後更換讀寫的xml文件
我們先創建一個xml文件(a.xml),然後解析xml,將解析到的內容輸入到另一個xml文件中去(b.xml)相當於拷貝了a.xml
a.Xml:
<HTML>
<Header name="a" type="x" size="4" odd="0">
<Field name="EMP-0" type="UINT32" ratio="1" link=""/>
<Field name="EMP-1" type="UINT32" ratio="1" link=""/>
<Field name="EMP-2" type="UINT32" ratio="1" link=""/>
</Header>
<Body name="b" type="x" size="4" odd="0">
<Field name="EMP-0" type="UINT32" ratio="1" link=""/>
<Field name="EMP-1" type="UINT32" ratio="1" link=""/>
<Field name="EMP-2" type="UINT32" ratio="1" link=""/>
<Field name="EMP-3" type="UINT32" ratio="1" link=""/>
</Body>
</HTML>
程序代碼:
#include"tinystr.h"
#include"tinyxml.h"
#include<iostream>
using namespace std;
#define SUCCESS 1
#define FAILED 0
int loadXml();
int main()
{
if(loadXml())
{getchar();return 1;}
getchar();
return 0;
}
int loadXml()
{
//創建兩個個xml文檔對象,一個為讀取,一個為輸出
TiXmlDocument *inXml = new TiXmlDocument();
TiXmlDocument *outXml = new TiXmlDocument();
//載入xml文件
if(!inXml->LoadFile("a.xml")) //判斷XML文件是否載入成功
{
cerr<<inXml->ErrorDesc()<<endl;
return 0;
}
//定義根節點,記錄xml文件的起始節點
TiXmlElement *inRoot = inXml->FirstChildElement(); //root指向xml文檔的第一個節點
inXml->Value();//獲取的值為文件名
//定義根節點並連接,將輸入的根節點傳給輸出的根節點
TiXmlElement *outRoot = new TiXmlElement(inRoot->Value());
outXml->LinkEndChild(outRoot);
if(NULL == inRoot) //判斷文件是否有內容
{
cerr<<"No root element !!!"<<endl;
inXml->Clear();
return 0;
}
//循環遍歷每個節點
for(TiXmlElement *inElem = inRoot->FirstChildElement(); inElem != NULL; inElem = inElem->NextSiblingElement())
{
TiXmlElement *outElem = new TiXmlElement(inElem->Value());
outRoot->LinkEndChild(outElem);
const char *name = inElem->Value();//獲取源文件中子節點的名字
outElem->SetValue(name); //設置目的文件子節點的名字
//獲取源文件的屬性,設置目標文件的屬性
const char *rName = inElem->Attribute("name");
outElem->SetAttribute("name",rName);
const char *rType = inElem->Attribute("type");
outElem->SetAttribute("type",rType);
const char *rSize = inElem->Attribute("size");
outElem->SetAttribute("size",rSize);
const char *rOdd = inElem->Attribute("odd");
outElem->SetAttribute("odd",rOdd);
if(strcmp(name,"0"))
{
for(TiXmlElement *inChild = inElem->FirstChildElement();inChild!=NULL;inChild=inChild->NextSiblingElement())
{
TiXmlElement *outChild = new TiXmlElement(inChild->Value());
outElem->LinkEndChild(outChild);
const char *cName = inChild->Attribute("name");
outChild->SetAttribute("name",cName);
const char *cType = inChild->Attribute("type");
outChild->SetAttribute("type",cType);
const char *cRatio = inChild->Attribute("ratio");
outChild->SetAttribute("ratio",cRatio);
const char *cLink = inChild->Attribute("link");
outChild->SetAttribute("link",cLink);
}
}
}
outXml->SaveFile("b.xml");
inXml->Clear();
outXml->Clear();
return true;
}
輸出結果:
輸出文件b.xml和a.xml 的內容是一樣的。
Ⅶ 如何修改xml文件
LZ是想激活盜版的Office 2007嗎?
你打開記事本, 文件->打開,找到 C:\ProgramFiles\CommonFiles\MicrosoftShared\OFFICE12\OfficeSetup Controller\Proof.en\Proof.XML 打開修改裡面的文本不行嗎?
我看lz並非是程序修改這個XML
Ⅷ XML文件修改
// 假定TreeView控制項的id為treeView
XmlDocument dom = new XmlDocument();
dom.Load("aaa.xml");//裝載XML文檔
//遍歷所有節點
int num = 0;
foreach(XmlElement birthday in dom.DocumentElement.ChildNodes)
{
//讀取數據
string type = birthday.SelectSingleNode("type").InnerText;
string date = birthday.SelectSingleNode("date").InnerText;
string title = birthday.SelectSingleNode("title").InnerText;
string name = birthday.SelectSingleNode("name").InnerText;
string text = name + ":" + title;//節點文字
string image = type;//節點圖片
string data = num.ToString();//節點對應數據
num++;
//裝載示例,將新建的節點添加到TreeView
TreeNode node = new TreeNode(text, data, image);//create a new node
treeView.Nodes.Add(node);
//編輯示例:將當前節點的生日更改為當前日期
birthday.SelectSingleNode("date").InnerText = DateTime.Now.ToString();
//刪除示例:將當前節點刪除
birthday.ParentNode.RemoveChild(birthday);
}
dom.Save();
Ⅸ java修改xml文件內容
<?xml version="1.0" encoding="UTF-8"?>
<users>
<Messages>
<sendName>sendUsers</sendName>
<receiveName>snake</receiveName>
<date>2007-12-04 12:20:00</date>
<status>0</status>
<message>this is Content</message>
</Messages>
</users>
java:
package com.lianxi.DAO;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class UpdateXml {
public static boolean doc2XmlFile(Document document,String filename)
{
boolean flag = true;
try
{
/** 將document中的內容寫入文件中 */
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
/** 編碼 */
//transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(new File(filename));
transformer.transform(source, result);
}catch(Exception ex)
{
flag = false;
ex.printStackTrace();
}
return flag;
}
public static Document load(String filename)
{
Document document = null;
try
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
document=builder.parse(new File(filename));
document.normalize();
}
catch (Exception ex){
ex.printStackTrace();
}
return document;
}
/**
* 演示修改文件的具體某個節點的值
*/
public static void xmlUpdateDemo()
{
Document document = load("c://Message.xml");
Node root=document.getDocumentElement();
/** 如果root有子元素 */
if(root.hasChildNodes())
{
/** ftpnodes */
NodeList ftpnodes = root.getChildNodes();
/** 循環取得ftp所有節點 */
for (int i=0;i<ftpnodes.getLength();i++)
{
NodeList ftplist = ftpnodes.item(i).getChildNodes();
for (int k=0;k<ftplist.getLength();k++)
{
Node subnode = ftplist.item(k);
/** 刪除ftp-chn節點 */
// if (subnode.getNodeType()==Node.ELEMENT_NODE&&subnode.getNodeName()=="ftp-chn")
// {
// ftpnodes.item(i).removeChild(subnode);
// }
/** 修改ftp-host的值為 192.168.0.1 */
if (subnode.getNodeType()==Node.ELEMENT_NODE&&subnode.getNodeName()=="status")
{
subnode.getFirstChild().setNodeValue("1");
}
}
}
}
doc2XmlFile(document,"c://Message.xml");
}
public static void main(String args[])throws Exception
{
UpdateXml.xmlUpdateDemo();
}
}
Ⅹ 使用java如何修改某個xml文件中的某項內容
代碼如下:
import org.jdom.*;
import org.jdom.output.*;
import org.jdom.input.*;
import java.io.*;
public class xml{
public void toXml() throws JDOMException,IOException{
SAXBuilder saxBuilder=new SAXBuilder(false);
saxBuilder.setExpandEntities(false);
File file = new File("c:\\test.xml");
Document doc =saxBuilder.build(new File("c:\\test.xml"));
Element elem=doc.getRootElement();
//System.out.println(elem.toString());
elem.getChild("Collectors").getChild("Collector").getAttribute("HostIP").setValue("192.168.0.1");
elem.getChild("Collectors").getChild("Collector").getAttribute("PortID").setValue("100000");
Element elem1 = (Element)elem.clone();
Document Doc=new Document(elem1);
XMLOutputter XMLOut = new XMLOutputter();
XMLOut.setEncoding("BIG5");
XMLOut.setNewlines(true);
file.delete();
XMLOut.output(Doc,new FileOutputStream("c:\\test"+".xml"));
}
public static void main(String args[]){
xml x = new xml();
try{
x.toXml();
}catch(Exception e){}
}
}