qt 怎么获得xml文件中的特定节点

qt 怎么获得xml文件中的特定节点,第1张

使用QXmlStreamReader::readElementText()可以读取节点的内容。 取src的话使用if(m_xml->name()attributes()value(id) == big8) src = m_xml->name()attributes()value(src); 应该就可以获得了。

第一种:使用XPath

XML的路径我配置在webconfig

的appSettings节点下

Hashtable ht = new Hashtable();

string orgCodePath = ServerMapPath(ConfigurationSettingsAppSettings["orgCodePath"]);

//string orgCodePath = ServerMapPath("//template/home/orgCodexml");

XmlDocument xmldoc = new XmlDocument();

xmldocLoad(orgCodePath);

//获取节点列表

XmlNodeList topM = xmldocSelectNodes("//Organization");

foreach (XmlElement element in topM)

{

string id = elementGetElementsByTagName("ID")[0]InnerText;

string domainName = elementGetElementsByTagName("DomainName")[0]InnerText;

htAdd(id, domainName);

}

第二种:遍历式读取XML

//打开某文件(假设webconfig在根目录中)

string filename=ServerMapPath("/") + @"WebApplication1/webconfig";

XmlDocument xmldoc= new XmlDocument();

xmldocLoad(filename);

//得到顶层节点列表

XmlNodeList topM=xmldocDocumentElementChildNodes;

foreach(XmlElement element in topM)

{

if(elementNameToLower()=="appsettings")

{

//得到该节点的子节点

XmlNodeList nodelist=elementChildNodes;

if ( nodelistCount >0 )

{

//DropDownList1ItemsClear();

foreach(XmlElement el in nodelist)//读元素值

{

//DropDownList1ItemsAdd(elAttributes["key"]InnerXml);

//thisTextBox2Text=elAttributes["key"]InnerText;

thisTextBox2Text=elAttributes["key"]Value;

thisLabel1Text=elAttributes["value"]Value;

//同样在这里可以修改元素值,在后面save。

// elAttributes["value"]Value=thisTextBox2Text;

}

}

}

}

xmldocSave(filename);

读取xml任意节点

XmlNode node=docSelectSingleNode("/configuration/appSettings/add"); //按照节点目录查询

if(node!=null)

{

string k=nodeAttributes["key"]Value;

string v=nodeAttributes["value"]Value;

node=null;

}

XmlNode node=docSelectSingleNode("/configuration/appSettings/add");

if(node!=null)

{

XmlNodeReader nr=new XmlNodeReader(node);

nrMoveToContent();

//检查当前节点是否是内容节点。如果此节点不是内容节点,则读取器向前跳至下一个内容节点或文件结尾。

nrMoveToAttribute("value");

string s=nrValue;

node=null;

}

string xml = "<xml version=" + "\"10\"><A><B><C>文本值</C></B></A>";

XmlDocument doc = new XmlDocument();

docLoadXml(xml);

string node=docSelectSingleNode("A/B/C")InnerText;

这是我写的,取到了“文本值”。

我是用kxml包来解析的。详情请看 >

using SystemXml;

XmlDocument xmlDoc = new XmlDocument();

xmlDocLoad(ServerMapPath("这里是你的XML的地址"));

XmlNode cNodes = xmlDocSelectSingleNode("columns");

for (int i = 0; i < cNodesChildNodesCount; i++)

{

XmlNode c = cNodesChildNodes[i];

cAttributes["hidden"]Value; //这里就取到hidden的值

cAttributes["show"]Value; // 这里就取到show的值

}

field="name" 这个也是节点属性啊。

大哥,代码很详细了吧,给分,给分!!!!!!!

代码如下:

import javaxxmlparsersDocumentBuilder;

import javaxxmlparsersDocumentBuilderFactory;

import orgw3cdomDocument;

import orgw3cdomElement;

import orgw3cdomNodeList;

public class FileTest {

/

@param args

/

public static void main(String[] args) {

DocumentBuilderFactory dbf = DocumentBuilderFactorynewInstance();

try {

DocumentBuilder db = dbfnewDocumentBuilder();

Document doc = dbparse("d:/testxml");

//得到根节点

Element root = docgetDocumentElement();

NodeList nl = rootgetElementsByTagName("id");

Element e = (Element) nlitem(0);

String id=egetTextContent();

Systemoutprintln("id的值为:"+id);

}catch(Exception e){

eprintStackTrace();

}

}

}

上面的代码中我把

<message msgType="response" msgId="String" timestampCreated="2010-5-13 15:55:54" version="String">

<response>

<code>0</code>

<description>成功</description>

</response>

<body bodyId="1">

<id>11223344</id>

</body>

</message>

这段内容放到了D盘下的testxml文件中

你如果要用可以直接将得到的给字符串加载成Document对象,就可以取到了。

以上就是关于qt 怎么获得xml文件中的特定节点全部的内容,包括:qt 怎么获得xml文件中的特定节点、C#中如何读取XML内具体 某条数据 的信息、如何将XML某节点的值(是字符串)获取并显示在textbox中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9689006.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存