<PACKET>
<BEGINTIME>
<VALUE value="20100813194953" />
<TIME_INTERVAL value="5" unit="s" />
</BEGINTIME>
<DATA>
<ITEM value="ECG/HR" type="NoSub" />
<VALUE>
<ORIGIN value="0" unit="bpm" />
<SCALE value="1" unit="bpm" />
<DIGITS>86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91</DIGITS>
</VALUE>
</PACKET>
文档中的如下值全部用C#语言解析出来,该怎么解析啊。以前没有接触过XML解析方面的程序,固希望有高人指点,帮忙解释,非常感激,在线等待哦,高分绝不少你的。。
value="20100813194953"
value="5" unit="s"
value="0" unit="bpm"
value="ECG/HR"
value="0" unit="bpm"86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91</DIGITS>
<BEGINTIME>
<VALUE value="20100813194953" />
<TIME_INTERVAL value="5" unit="s" />
</BEGINTIME>
<DATA>
<ITEM value="ECG/HR" type="NoSub" />
<VALUE>
<ORIGIN value="0" unit="bpm" />
<SCALE value="1" unit="bpm" />
<DIGITS>86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91</DIGITS>
</VALUE>
</PACKET>
文档中的如下值全部用C#语言解析出来,该怎么解析啊。以前没有接触过XML解析方面的程序,固希望有高人指点,帮忙解释,非常感激,在线等待哦,高分绝不少你的。。
value="20100813194953"
value="5" unit="s"
value="0" unit="bpm"
value="ECG/HR"
value="0" unit="bpm"86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91 86 87 86 87 84 83 87 105 85 84 84 84 || 89 87 84 85 87 87 86 93 91 91 91</DIGITS>
dom.LoadXml(xml);
foreach (System.Xml.XmlNode node in dom.ChildNodes)
{
if(node.Name !="xml")
Response.Write(GetNode(node));
}
} string GetNode(System.Xml.XmlNode node)
{
string str = node.InnerText;
if (node.HasChildNodes)
{
str = "";
foreach (System.Xml.XmlNode n in node.ChildNodes)
{
str += GetNode(n);
}
}
return str;
}
我不要一次性用一个STR全部反回,我想用多个变量保存我想要的值!!
用Xpath,很容易就能一个个拿到值
<PACKET>
<BEGINTIME>
<VALUE value="20100813194953" />
<TIME_INTERVAL value="5" unit="s" />
</BEGINTIME>
<DATA>
<ITEM value="ECG/HR" type="NoSub" />
<VALUE>
<ORIGIN value="0" unit="bpm" />
<SCALE value="1" unit="bpm" />
<DIGITS>
86 87 86 87 84 83 87 105 85 84 84
</DIGITS>
</VALUE>
</DATA>
<DATA>
<ITEM value="SEX/HRE" type="Sub" />
<VALUE>
<ORIGIN value="0" unit="bpm" />
<SCALE value="1" unit="bpm" />
<DIGITS>
86 87 86 87 84
</DIGITS>
</VALUE>
</DATA>
</PACKET>
只要可以解析成这个样子就可以了
document.Load("c:\\temp\\t.xml");
XmlElement root = document.DocumentElement;
Console.WriteLine("value=" + root["BEGINTIME"]["VALUE"].Attributes[0].Value);
XmlElement e1 = root["BEGINTIME"]["TIME_INTERVAL"];
Console.WriteLine("value=" + e1.Attributes[0].Value);
Console.WriteLine("unit=" + e1.Attributes[1].Value);
using System.Collections.Generic;
using System.Text;
using System.Xml;namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
XmlDocument document = new XmlDocument();
document.Load("c:\\temp\\t.xml"); //t.xml 是你的文件名
XmlElement root = document.DocumentElement;
Console.WriteLine("value=" + root["BEGINTIME"]["VALUE"].Attributes[0].Value);
XmlElement e1 = root["BEGINTIME"]["TIME_INTERVAL"];
Console.WriteLine("value=" + e1.Attributes[0].Value);
Console.WriteLine("unit=" + e1.Attributes[1].Value);
}
}
}如果这样你还看不懂, 我劝你还是先去学习 C#, 或者干脆别作技术了。
哈哈。你上面那个代表我正在试用,可以把属性中的值全可以采集出来,我现在还要把有多个<data></data>元素对的元素全遍历出来。。
<PACKET>
<DATA>
<ITEM value="ECG/HR" type="NoSub" />
<VALUE>
<ORIGIN value="0" unit="bpm" />
<SCALE value="1" unit="bpm" />
<DIGITS>
86 87 86 87 84 83 87 105 85 84 84
</DIGITS>
</VALUE>
</DATA>
<DATA>
<ITEM value="SEX/HRE" type="Sub" />
<VALUE>
<ORIGIN value="0" unit="bpm" />
<SCALE value="1" unit="bpm" />
<DIGITS>
86 87 86 87 84
</DIGITS>
</VALUE>
</DATA>
</PACKET>
public string m_beginTime;
public string m_spitTime;
public string m_spitUnit;
public string m_endTime;
public string m_moder;
public string m_type;
public string m_orgValue;
public string m_orgUnit;
public string m_sclValue;
public string m_sclUnit;
public string m_number;
public TransXML()
{
XmlDocument document = new XmlDocument();
document.Load("F:\\vs_test\\xmlssss.xml");
XmlElement root = document.DocumentElement;
XmlNodeList nodeList;
m_beginTime = root["BEGINTIME"]["VALUE"].Attributes[0].Value;
m_spitTime = root["BEGINTIME"]["TIME_INTERVAL"].Attributes[0].Value;
m_spitUnit = root["BEGINTIME"]["TIME_INTERVAL"].Attributes[1].Value; nodeList = root.GetElementsByTagName("DATA");
for (int i = 0; i < nodeList.Count; i++)
{
m_moder = nodeList[i]["ITEM"].Attributes[0].Value;
m_type = nodeList[i]["ITEM"].Attributes[1].Value;
m_orgValue = nodeList[i]["VALUE"]["ORIGIN"].Attributes[0].Value;
m_orgUnit = nodeList[i]["VALUE"]["ORIGIN"].Attributes[1].Value;
m_sclValue = nodeList[i]["VALUE"]["SCALE"].Attributes[0].Value;
m_sclUnit = nodeList[i]["VALUE"]["SCALE"].Attributes[1].Value;
m_number = nodeList[i]["VALUE"]["DIGITS"].InnerXml;
}
m_val = m_number;
}
呵呵,用这个机械的方法我解析出来了。但是,有个问题,如果我的同级元素中有多个,如<DATA></DATA>那么,我解析出来的参数岂不要用数组来保存,这样的话是不是太机器了。有没有更好的方法,使得我能非常方面的就能解析出
<?xml version="1.0" ?>
<PACKET>
<BEGINTIME>
<VALUE value="20100813194953" />
<TIME_INTERVAL value="5" unit="s" />
</BEGINTIME>
<DATA>
<ITEM value="ECG/HR" type="NoSub" />
<VALUE>
<ORIGIN value="0" unit="bpm" />
<SCALE value="1" unit="bpm" />
<DIGITS>
86 87 86 87 84 83 87 105 85 84 84
</DIGITS>
</VALUE>
</DATA>
<DATA>
<ITEM value="SEX/HRE" type="Sub" />
<VALUE>
<ORIGIN value="0" unit="bpm" />
<SCALE value="1" unit="bpm" />
<DIGITS>
86 87 86 87 84
</DIGITS>
</VALUE>
</DATA>
</PACKET>当然,这中间有两个<DATA></DATA>如果我还有几十个呢???那我用这种方法解析岂不太土了。。请高手继续赐教。。