程序如下,其中equal(“”)双引号中的值为节点的属性值
属性值获取如下:
package saxbuilderibmxmlproperty;
import javaioFile;
import javaioIOException;
import javautilIterator;
import orgdom4jAttribute;
import orgdom4jDocument;
import orgdom4jDocumentException;
import orgdom4jElement;
import orgdom4jioSAXReader;
import orgjdomJDOMException;
import orgjdominputSAXBuilder;
public class XmlProperty {
public Element element;
String path = "D:\\xml\\axml";
public void getElementProperty() {
File file = new File(path);
try {
SAXReader reader = new SAXReader();
Document dc = readerread(file);
Element e = dcgetRootElement();
// 节点值
Element child = (Element) egetQName("COMMAND");
Systemoutprintln(childtoString());
// 一级节点
for (Iterator iterator = eelementIterator(); iteratorhasNext();) {
Element el = (Element) iteratornext();
// 一级节点的属性信息
for (Iterator iterator2 = elattributeIterator(); iterator2
hasNext();) {
Attribute attribute = (Attribute) iterator2next();
if(attributegetName()equals("bodyCategory")){
Systemoutprintln("attributegetName()一级节点的属性信息+"+attributegetName()+attributegetValue());
}else{
Systemoutprintln("attributegetName()一级节点的属性信息+"+attributegetName()+attributegetValue());
}
// 二级节点
for (Iterator iterator3 = elelementIterator(); iterator3
hasNext();) {
Element ele = (Element) iterator3next();
// 二级节点的属性信息
for (Iterator iterator4 = eleattributeIterator(); iterator4
hasNext();) {
Attribute attribute1 = (Attribute) iterator4next();
if(attribute1getName()equals("cmdType")){
Systemoutprintln("attribute1getName()二级节点的属性信息+"+attribute1getName()+"+"+attribute1getValue());
}else{
Systemoutprintln("attribute1getName()二级节点的属性信息+"+attribute1getName()+"+"+attribute1getValue());
}
}
}
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
}
可以通过元素中的getText方法获取到节点的内容。举例:SAXReader sax = new SAXReader();Document document = saxread(reader);//reader为定义的一个字符串,可以转换为xmlElement root = documentgetRootElement();//获取到根节点元素String str = root getText()//获取到节点的内容用到的是dom4j-161jar,需要引入的包是:import orgdom4jDocument;import orgdom4jDocumentException;import orgdom4jElement;import orgdom4jioSAXReader;备注:如果是多个子节点可以通过地Element xx=root element("code")逗获取到子节点的元素,前提是需要知道子节点的名称。怎么获取xml某个节点下的所有内容
//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;
}
C# *** 作XML 有以下几种方式:
使用XmlDocument相关类库和方法 *** 作xml。
使用XDocument相关类库和方法 *** 作xml。
使用XmlReader和XmlWriter相关类库和方法 *** 作xml。
获得指定节点的值也需要分为属性和元素。
获得指定节点的值也需要分为属性和元素:
使用XmlDocumentXmlDocument doc = new XmlDocument,读取属性+元素foreach (XmlNode item in nodeList)。
*** 作xml文件的类是
using
SystemXml;
中的
XmlDocument
以下是一个简单的例子
XmlDocument
xml
=
new
XmlDocument();//新建xml对象
xmlLoad("xml文件路径");
//载入xml文件路径
XmlNode
node
=
xmlFirstChild;
//获取文档的第一个节点
foreach
(XmlNode
n
in
nodeChildNodes)
{
string
v
=
nValue;
//节点的值
string
v1
=
nAttributes["属性名"]Value;
//节点属性值
string
v2
=
n["元素名"]Value;
//元素值
string
v3
=
n["元素名"]Attributes["属性名"]Value;
//元素属性值
}
//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;
}
//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;
}
�0�2�0�2�0�2 最近遇到一个问题,用java解析xml时,需要获得一个xml文档中指定的某个节点,当然最简单的办法就是遍历所有的节点,如某个节点满足条件,则是我们要的结果,但我不想遍历所有的节点,因为这个问题只是一个复杂过程中的一小步,它会被反复调用,因此我需要最直接的方法获得某个已知属性值的确定节点。因此,这个问题也可以概括为:有没有根据节点(或name)属性名获得该节点的原api。
�0�2�0�2�0�2�0�2 具体一些,有如下xml文档:<sheet<field row="2" col="2" type="int"DEA_XZ</field2_2
<field row="2" col="3" type="string"RTP_ID</field2_3
<field row="2" col="4" type="string"DEA_YEAR</field2_4
<field row="2" col="7" type="int"DEA_RTP_TYPE</field2_7</sheet�0�2�0�2 我想获得row="2" col="3"的节点,据我所查,好像没有直接的方法。
�0�2�0�2 变通一下,xml修改如下:�0�2<sheet<field name="row2_col2" type="int"DEA_XZ</field2_2
<field name="row2_col3" type="string"RTP_ID</field2_3
<field name="row2_col4" type="string"DEA_YEAR</field2_4
<field name="row2_col7" type="int"DEA_RTP_TYPE</field2_7</sheet�0�2�0�2 这样呢?有没有直接的api,可以获得name为row2_col3的节点?同样,我也没有得到答案,大家有知道告诉小弟一下,不胜感激。
�0�2�0�2 实在没有办法,我就用了种“另类”的方式,xml如下:<sheet<field2_2 type="int"DEA_XZ</field2_2
<field2_3 type="string"RTP_ID</field2_3
<field2_4 type="string"DEA_YEAR</field2_4
<field2_7 type="int"DEA_RTP_TYPE</field2_7</sheet�0�2�0�2 这样看起来很不优雅,至少我是这么认为的。但这样却可以直接拿到你想要的节点:�0�2orgjdomElement root = documentgetRootElement();
�0�2�0�2 目前,我就是这样解决的,但我感觉很不优雅,我想我的xml文档(配置)文件应该保持第一种或第二种格式更好些。所以请大家帮忙,看看有没有直接的方法(api)
以上就是关于java语句如何获取XML文件的节点值全部的内容,包括:java语句如何获取XML文件的节点值、怎么获取xml某个节点下的所有内容、C# 如何得到一XML文件中指定的节点属性值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)