有人可以帮我解释一些逻辑吗?

Posted

技术标签:

【中文标题】有人可以帮我解释一些逻辑吗?【英文标题】:Can somebody help me with some logic? 【发布时间】:2011-12-22 15:49:59 【问题描述】:

我无法开发这种逻辑,有人可以帮我解决这个问题吗?

我有一些重要的逻辑让我坚持下去。

我有一个完全动态的 XML - 即它的 Detail 节点的数量可能会增加和减少。 并且细节节点的子节点数量也可以增减。

<?xml version="1.0" encoding="utf-8" ?>
<body>
  <detail>
    <FirstName>t1 </FirstName>
    <LastName>t2</LastName>
    <Company>t3</Company>
    <Country>t4</Country>
    <Proviance>MP</Proviance>
  </detail>

  <detail>
    <FirstName>t5 </FirstName>
    <LastName>t6</LastName>
    <Company>t7</Company>
    <Country>t8</Country>
    <Proviance>t9</Proviance>
  </detail>

  <detail>
    <FirstName>t10 </FirstName>
    <LastName>t11</LastName>
    <Company>t12</Company>
    <Country>t13</Country>
    <Proviance>t14</Proviance>
  </detail>

</body>

我是这样读 XML 的:

 xmlhttp = new XMLHttpRequest();
        xmlhttp.open("GET", "/TinyEditor/PreviewBody.xml", true);
        xmlhttp.send();
        xmlDoc = xmlhttp.responseXML;

现在

每次我像这样从 DOM 中读取 html 内容,每次都不一样:

      var x = tinyMCEPopup.editor.getContent().toString();
        alert(x);

the x gets the value like this (x can be different at different times) 

<p>Headline Dear <br /> <br /> <img src="Images/Untitled.png"  /> <br /> <br />Dear <strong>FirstName&nbsp; <strong> LastName</strong></strong></p>
<p><strong><br /></strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I am from company <strong> Company</strong> that is located in <strong> Country</strong>,&nbsp; <strong> Proviance</strong>, <strong> City.</strong></p>
<p><strong><br /></strong></p>
<p>Thanks</p>
<p><strong>FirstName</strong> <strong> LastName</strong> </p>
<p><strong><br /></strong></p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>

现在我想在这个 HTML 中搜索 XML 中的每个细节元素,并想用 XML 中的元素值替换 HTML(名字、姓氏)中的文本 每个细节节点的节点。 之后,我会将格式化的 HTML 内容重写到 DOM。 这是我无法开发的逻辑,有人可以帮我解决这个问题吗?


我的努力:

<xsl:for-each select="Home/menu">
    <xsl:variable name="i"><xsl:value-of select="1+position()" /></xsl:variable>
    <script language="javascript">
        var id = '<xsl:value-of select="$i"/>';
        var firstname = '<xsl:value-of select="firstname"/>';
        var lastrname = '<xsl:value-of select="lastrname"/>';
        var firstname = '<xsl:value-of select="firstname"/>';
        var lastrname = '<xsl:value-of select="lastrname"/>';
        var firstname = '<xsl:value-of select="firstname"/>';
        var lastrname = '<xsl:value-of select="lastrname"/>';
        $('#CurrProg-'+id).html(functionname('FirstName',firstname));
        $('#CurrProg-'+id).html(functionname('LastName',firstname));
        $('#CurrProg-'+id).html(functionname('tagname',firstname));
        $('#CurrProg-'+id).html(functionname('tagname',firstname));
        $('#CurrProg-'+id).html(functionname('tagname',firstname));
        $('#CurrProg-'+id).html(functionname('tagname',firstname));
    </script>
</xsl:for-each>

和功能

    $(document).ready(function () 

        /* load all xsl and xml file */

        xmlDoc = $.xsl.load('XML/PreviewBody.xml');
        xslHome = $.xsl.load('XSL/Preview.xsl');

        $('#Page_Content').getTransform(
    xslHome,
    xmlDoc
);

    );

 function textReplace(actualtext, replacementtext) 
        var actualtext = new RegExp(actualtext, 'ig');
        document.getElementById('content').innerHTML = x.replace(actualtext, replacementtext);

    

但它不适用于动态 XML,我必须提前修复节点...我想在运行时进行。

【问题讨论】:

这是对问题的一个很好的描述——请发布你到目前为止所尝试的内容,我们可以帮助解决一个问题——只是一个问题对这个网站来说是一个大问题。 我更喜欢 asp.net,无法在其中付出艰苦的努力。 如果描述性不足以理解,请告诉我,以便我更容易理解。 可以理解。这只是一个问题。聘请顾问来编写您的程序。这是一个回答问题的网站,而不是解决整个问题。你还没有尝试过。另外,我认为你应该学习一些关于 jQuery 的知识,这个任务在 jQuery 中变得更加容易......最多可能大约 20-40 行。 是的,发布您拥有的代码并描述您的问题。正如你所看到的,这让你无处可去。大多数关于 SO 的问题都会在不到一个小时(通常是 5-10 分钟)内得到回答。你的赏金在这里已经 2 天了。如果您想要结果,请采纳我的建议。 【参考方案1】:

我更愿意为此目的使用 JQuery。它对于此类任务非常方便,您无需为每个浏览器编写代码。

http://www.vagrantradio.com/2009/10/how-to-parse-xml-using-jquery-and-ajax.html

【讨论】:

完全同意,您不希望在数据是动态的想法之上出现跨浏览器问题 虽然理论上可以回答这个问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。如果链接因任何原因而中断,那么您当前形式的答案将变得毫无用处。谢谢【参考方案2】:

你应该使用 xslt 来生成你的内容而不是你的脚本

如果你仍然想做你想做的事情,我可以推荐以下方法:使用FirstName 而不是FirstName,因为你会发现它更好(FirstName 的出现不能被替换)和 b.t.w。删除您的 xslt 并使用 dom 循环遍历 xml

我也不认为你在使用new RegExp() 正确的检查手册

顺便说一句。您说对于任何细节元素但不可能,您必须选择 1 个细节元素并通过其兄弟元素循环

这是很好的替换js中的代码(不知道jquery(对不起))

function textReplace(actualtext, replacementtext) 
  document.getElementById('content').innerHTML = document.getElementById('content').innerHTML.replace(actualtext,replacementtext);

【讨论】:

以上是关于有人可以帮我解释一些逻辑吗?的主要内容,如果未能解决你的问题,请参考以下文章

有人可以解释一下这个示例 C# 代码背后的逻辑吗?多年来我没有得到答案 10 [重复]

有人能解释一下为啥“运算符优先级”适用于 javaScript 中的“||”、“&&”等逻辑运算符吗

有人可以帮我(新手)解释抽象类和接口吗? [复制]

解决算法如何适用于命题逻辑?

逻辑回归框架

计算机逻辑问题