javascript - 在 XML 文件中添加新联系人时如何生成/写入 ID(字母数字)

标签 javascript xml dom xslt

在 xml 文件中创建新联系人期间是否可以生成字母数字 ID。 我使用了XSLT函数<xsl:value-of select="generate-id(.)"/>在序列化开始时在我的 xml 文件中生成唯一的 ID,因此我使用上面的内容来生成 ID。

我可以使用 XUL 中的 JavaScript DOM 在 xml 文件中添加新记录。

function create()
{

var src = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\
<CONTACT>\
    <Customer-ID>"+document.getElementById("Customer-ID").value+"</Customer-ID>\
    <FirstName>"+document.getElementById("FirstName").value+"</FirstName>\
    <LastName>"+document.getElementById("LastName").value+"</LastName>\
    <email>"+document.getElementById("email").value+"</email>\
    <address>"+document.getElementById("address").value+"</address>\
    <state>"+document.getElementById("state").value+"</state>\
    <country>"+document.getElementById("country").value+"</country>\
</CONTACT>";

print(src);

var node = srcToNode(src);

    if (objXMLDoc.childNodes && objXMLDoc.childNodes.length) {

        for (var i = 0; i < objXMLDoc.childNodes.length; ++i) {
    if (objXMLDoc.childNodes.item(i).childNodes && objXMLDoc.childNodes.item(i).childNodes.length) {
         var x = objXMLDoc.childNodes.item(i).childNodes.length;
        var lastNode = objXMLDoc.childNodes.item(i).childNodes.item(x-2);

        }

      }

objXMLDoc.getElementsByTagName("CONTACT");//objXMLDoc.childNodes.item(0).lastChild;

objXMLDoc.appendChild(node); 
var serializer = new XMLSerializer();
var prettyString = serializer.serializeToString(objXMLDoc);
saveFile(prettyString, "C:\\contact.xml");
 }
} 

上面的代码可以完美地在我的 xml 文件中创建一条新记录。 在 XML 文件中创建新联系人期间,如何生成唯一 ID?而不是在文本框中手动输入 ID?

XML 文件:

<?xml version="1.0" encoding="UTF-8"?>
<CONTACTS>

<CONTACT>
<Customer-ID>N65539</Customer-ID>
<FirstName>Ben</FirstName>
<LastName>Foden</LastName>
<email></email>
<address></address>
<state>AZ</state>
<country>US</country>
</CONTACT>

<CONTACT>
<Customer-ID>N65539</Customer-ID>
<FirstName>Nimal</FirstName>
<LastName>Anup</LastName>
<email>nimal.anup@gmail.com</email>
<address></address>
<state>TN</state>
<country>IN</country>
</CONTACT>


<CONTACTS>

最佳答案

此 XSLT 按原样复制输入 XML,并使用唯一的 ID 填充所有 Customer-ID 元素:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*">
  <xsl:copy>
   <xsl:apply-templates select="node()|@*"/>
  </xsl:copy>
 </xsl:template>

 <xsl:template match="Customer-ID">
  <xsl:copy>
   <xsl.value-of select="generate-id()"/>
  </xsl:copy>
 </xsl:template>

</xsl:stylesheet>

关于javascript - 在 XML 文件中添加新联系人时如何生成/写入 ID(字母数字),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6708983/

相关文章:

javascript - 想要显示 "True"和 "False"按钮

javascript - 使用 JQuery(或 JS)选择选中的输入复选框旁边的文本?

javascript - AngularJS:自动选择单选按钮

xml - 如何使用Powershell从xml过滤以获取启动持续时间?

java - 来自 Java EE 类(class)测试 : JPA mapping with annotations mixed with XML. 哪个优先级更高?

javascript - jQuery 中的触发按钮单击不起作用

javascript - 如何从 get 中删除这个 ?url=

javascript - 如果数据库中的值为 true,则如何设置复选框,如果在 angularJS 中编辑时值为 false,则如何取消选中

javascript - CSS/less 文件未加载

javascript - 在 IIS 上显示来自 javascript 文件(SOAP 请求)的 XML 响应