从xml文件创建html数据列表



我有以下xml文件,我想将其加载到html数据列表中
我用了下面的例子作为参考,但无法使它发挥作用
如有任何帮助,我们将不胜感激
如何使用jquery从XML文件创建自定义数据列表
但是,如果需要,我可以更改XML文件的格式或结构。

programs.xml和html文件当然在同一个文件夹目录中。脚本中的某个地方似乎有问题,因为它没有从xml加载数据。

<?xml version="1.0" encoding="utf-8"?>
<frequencyList>
<program>"10000,5000,880,3000,95" value="Stomachache"<time>3</time></program>
<program>"2720,2170,880,787,727,190,500" value="Headache"<time>3</time></program>
<program>"20,146,727,776,787,880,10000" value="Toothache"<time>3</time></program>
</frequencyList>

<!DOCTYPE HTML><html>
<head>
<title>Datalist</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="utf-8">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$.get('programs.xml', function(xml){
$(xml).find('program').each(function(){
var $program = $(this).text();
$('<option> data-value='+$program+'>').appendTo('#frequencyList')
});
});     
});
</script>

</head>
<body>
<input type="text" name="frequencyList" list="frequencyList">
<datalist id="frequencyList"></datalist>
</body>
</html>

我不修复您的代码,但知道如何解决您的问题:

var deinstring = '"10000,5000,880,3000,95"  value="Stomachache"';
var allesmussraus = deinstring.match(/value="(.*?)"/)[0].trim().replace(/value=/g, '').replace(/['"]+/g, '');  //returns array
mydiv = document.getElementById("ausgabe").innerHTML = allesmussraus;

和HTML代码:

<div id="ausgabe">
</div>

其输出为:

Stomachache

也许这可以帮助你解决问题。

我正在考虑使用xml_parser->https://www.w3schools.com/xml/xml_parser.asp
有人有经验并能提供帮助吗
我只需要解析"程序";并将其附加到数据列表:(

用$("+$program+">"(追加。appendTo("#programList"(
我仍然需要循环所有";程序";在xml中,并从中获取字符串。

<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var parser, xmlDoc;
var text = "<frequencyList>" +
"<program>"10000,5000,880,3000,95" value="Stomachache"<time>3</time></program>" +
"<program>"2720,2170,880,787,727,190,500" value="Headache"<time>3</time></program>" +
"<program>"20,146,727,776,787,880,10000" value="Toothache"<time>3</time></program>" +
"</frequencyList>";
parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");
document.getElementById("demo").innerHTML =
xmlDoc.getElementsByTagName("program")[0].childNodes[0].nodeValue;
</script>
input type="text" id="list_input" list="programList" style="width: 220px;">
<datalist id="programList">
<option data-value="262,2154" value="Kopfweh">
</datalist>
</body>
</html>

我不确定你是否真的需要jquery,也不确定我是否正确理解你,但试着把你的函数改为:

function executeScript() {
$xml 
.find("program")
.each(function(index) {
$elem = "<option data-value=" + $(this).text() + ">"
$($elem).appendTo("#programList")
});
}

看看它是否有效。

此代码解析<program>之间的字符串
如何更改它,以便它从顶部第一个问题中的xml文件加载"programs.xml";哪个在同一目录中,而不是硬编码的xml字符串
输出应该是->选项数据值="0";1000050008803000,95〃;值=";胃痛>这样我就可以把它输入到html数据列表中。

我的想法是这样的,但它没有加载xml。

function executeScript() {
$(document).ready(function(){
$.get('programs.xml', function(xml){
$xml
.find("program")
.each(function(index) {
$elem = "<option data-value=" + $(this).text() + ">";
$($elem).appendTo("#programList")
});   
});     
});    
}

<!DOCTYPE HTML><html>
<head>
<title>Datalist</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="utf-8">
<body onload="executeScript()">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">

var xml = '<?xml version="1.0" encoding="utf-8"?><frequencyList>'+
'<program>"10000,5000,880,3000,95" value="Stomachache"<time>3</time></program>'+
'<program>"2720,2170,880,787,727,190,500" value="Headache"<time>3</time></program>'+
'<program>"20,146,727,776,787,880,10000" value="Toothache"<time>3</time></program></frequencyList>';

var $xml = $(xml);
function executeScript() {
$xml 
.find("program")
.each(function(index) {
$elem = "<option data-value=" + $(this).text() + ">";
$($elem).appendTo("#programList")
});
}
</script>

</head>
<body>
<input type="text" id="list_input" list="programList" style="width: 220px;">
<datalist id="programList">
<option data-value="262,2154" value="Kopfweh" time="3">
</datalist>
</body>
</html>

最新更新