JS获取XML节点值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS获取XML节点值相关的知识,希望对你有一定的参考价值。
for(i=0;i<...;i++)
qs = document.createElement("td");
gj = document.createElement("td");
row = document.createElement("tr");
qs.appendChild(qushu)
gj.appendChild(guajia);
row.appendChild(qs);
row.appendChild(gj);
showBody.appendChild(row);
row.onclick = function()aa(this)
function aa()
这里点击事件怎么获取row 里面的qs,gj里面的值?
这里是<tbody>。意思鼠标点击TABLE的行就取出行<tr>里面的每列<td>的值。
直接传TD为什么会是最后一个结果?
row.onclick = function()aa(qs,gj) 这样直接传行的节点,点击会变成最后一行的值
作 用
传回第一个符合样式的节点。
基本语法
objDocumentNode = xmlDocumentNode.selectSingleNode(patternString);
说 明
patternString 为一包含XSL 样式的字符串。此方法会传回第一个符合的节点对象,如果没有符合的节点,则传回null。
范 例
objNode = xmlDoc.selectSingleNode("EMAIL/BCC");
alert(objNode.xml);
=============================================================
selectNodes 方法
作 用
传回所有符合提供样式(pattern)的节点。
基本语法
objDocumentNodeList = xmlDocumentNode.selectNodes(patternString);
说 明
patternString 为一包含XSL 样式的字符串。此方法会传回节点清单对象,包含符合样式的节点。如果没有符合的节点,则传回空的清单列表。
范 例
objNodeList=xmlDoc.selectNodes("/");
alert(objNodeList.item(0).xml);
希望这个资料有帮助 参考技术B <textarea name="other" id="other" cols="50" rows="5" >无</textarea>
<script>
alert(other.innerhtml);
alert(other.innerText);
alert(other.value);
</script>
这3个都可以,推荐用value本回答被提问者采纳
C# 获取 XML 节点值
【中文标题】C# 获取 XML 节点值【英文标题】:C# Get XML Node Value 【发布时间】:2013-08-12 19:48:21 【问题描述】:我想使用 C# 获取 question
和 answer
值,但在此之前我想获取我需要的 ID。我正在使用这个 XML:
<root>
<information>
<name>Tasks</name>
<date>15-05-2005</date>
</information>
<tasks>
<task>
<id>1</id>
<question>Here comes question 1</question>
<answer>Answer 1</answer>
</task>
<task>
<id>2</id>
<question>Here comes question 2</question>
<answer>Answer 2</answer>
</task>
<task>
<id>3</id>
<question>Here comes question 3</question>
<answer>Answer 3</answer>
</task>
</root>
C#代码:
XDocument tasks;
int TheIdINeed = 2;
string quest = "";
string answ = "";
在表单加载时:
tasks = XDocument.Load(leveltoload);
var status = tasks.Element("level").Element("information");
quest = tasks.Element("root").Element("tasks").Element("task").Element("question").Value; // It returns me the first task data, but I need to load data with required Id (int TheIdINeed = ...)
对不起,我的英语不好。
【问题讨论】:
完美英语 【参考方案1】:你可以用这个
string id = "2";
var qa = doc.Descendants("tasks").Elements("task")
.Where(x => x.Element("id").Value == id).FirstOrDefault();
if (qa != null)
var question = qa.Element("question").Value;
var answer = qa.Element("answer").Value;
如果您需要获取此范围之外的问题和答案,我建议创建一个保存数据的类。例如,
public class QuestionAnswer
public string ID get; set;
public string Question get; set;
public string Answer get; set;
var qa = doc.Descendants("tasks").Elements("task")
.Where(x => x.Element("id").Value == id)
.Select(x => new QuestionAnswer()
ID = "2",
Question = x.Element("question").Value,
Answer = x.Element("answer").Value
);
您可以通过使用字典来存储问题/答案对来改进上述内容,但这只是为您提供一个想法的示例。如果您的 QuestionAnswer 类比这两个属性更复杂。
【讨论】:
这有点低效,因为您可以使用带有谓词的 FirstOrDefualt 重载。 @It'sNotALie。 - 很好的补充。 +1 为您的答案。【参考方案2】:var empty = new XElement("e");
var sID = id.ToString();
var element = tasks.Descendants("task")
.FirstOrDefault(x => ((string)x.Element("id")) == sID);
string quest = (string)((element ?? empty).Element("question"));
string answ = (string)((element ?? empty).Element("answer"));
【讨论】:
没有XElement.Empty
这样的东西(除非你的意思是IsEmpty
,但这不是静态属性)。【参考方案3】:
您可以将所有数据都放入字典中,这样您就不会重复转换为字符串
var res = tasks.Descendants("task")
.Select(x => x.Elements().ToDictionary(e => e.Name.ToString(), e => (string)e.Value))
.FirstOrDefault(x => x["id"] == id);
res["question"]
res["answer"]
但如果您的 xml 中有没有问题或答案的任务,您必须先检查 res 是否包含键,然后才能获得价值,或者使用 TryGetValue:
string question;
res.TryGetValue("question", out question);
【讨论】:
以上是关于JS获取XML节点值的主要内容,如果未能解决你的问题,请参考以下文章