//xmlFile是xml文件,nodeName是节点名,attributeName是节点的属性名,因为节点名是可以重复的,所以用list存放返回值
public List<string> GetAttribute(string xmlFile, string nodeName, string attributeName)
{
List<string> retList = new List<string>();
XmlDocument xx = new XmlDocument();
xxLoad(xmlFile);
XmlNodeList xxList = xxGetElementsByTagName(nodeName);
foreach (XmlNode xxNode in xxList)
{
retListAdd(xxNodeAttributes[attributeName]Value);
}
return retList;
}
XmlDocument先把xml load进来。。
//取所有root节点子节点
XmlNodeList nodeList = docSelectNodes("/root");
for each(XmlNode node in nodeList) //遍历每一个子节点
{
//分别读取子节点的需要节点值,自己存吧,反正这么取的
string elementValue=nodeSelectSingleNode("//elementValue")InnerTextToString();
string elementScore=nodeSelectSingleNode("//elementScore")InnerTextToString();
}
创建解析器
SAXReader saxreader = new SAXReader();
读取文档
Document doc = saxreaderread(new File("url"));
获取根
Element root = docgetRootElement();
获取子节点
List<Element> list = rootelements();
Systemoutprintln(eelementText("name"));
Systemoutprintln(eelement("score")attributeValue("java"));
Reader reader = new InputStreamReader(con
getInputStream());
SAXReader sax = new SAXReader();
// saxsetEncoding("GBK");
Document document = saxread(reader);
documentsetXMLEncoding("GBK");
Element root = documentgetRootElement();
// Document doc = readerread(read);
// Element root = docgetRootElement();
readNode(root, "");
public static void readNode(Element root, String prefix) {
if (root == null) return;
// 获取属性
List<Attribute> attrs = rootattributes();
if (attrs != null && attrssize() > 0) {
Systemerrprint(prefix);
for (Attribute attr : attrs) {
Systemerrprint(attrgetValue() + " ");
}
Systemerrprintln();
}
// 获取他的子节点
List<Element> childNodes = rootelements();
prefix += "\t";
for (Element e : childNodes) {
//输出内容
Systemerrprintln(egetName()+":"+egetData());
readNode(e, prefix);
}
}
代码如下:
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对象,就可以取到了。
可以通过元素中的getText方法获取到节点的内容。
举例:
SAXReader sax = new SAXReader();
Document document = saxread(reader);//reader为定义的一个字符串,可以转换为xml
Element root = documentgetRootElement();//获取到根节点元素String str = root getText()//获取到节点的内容
用到的是dom4j-161jar,需要引入的包是:
import orgdom4jDocument;
import orgdom4jDocumentException;
import orgdom4jElement;
import orgdom4jioSAXReader;
备注:如果是多个子节点可以通过地Element xx=root element("code")逗获取到子节点的元素,前提是需要知道子节点的名称。
SELECT masterdbofn_pcre_match('该段xml代码','<() value=()>')
获取xml中的字段信息,根据‘<() value ()>’该正则过滤出所有的信息,如果匹配到了,返回结果1,没匹配到就是0了
以上就是关于C# 如何得到一XML文件中指定的节点属性值全部的内容,包括:C# 如何得到一XML文件中指定的节点属性值、.net读取XML子节点的值、java怎么通过xml节点的属性获取这个节点的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)