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

发布于 2024-11-24 19:19:53 字数 2560 浏览 0 评论 0 原文

在 xml 文件中创建新联系人期间是否可以生成字母数字 ID。 我使用 XSLT 函数 在序列化开始时在 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>[email protected]</email>
<address></address>
<state>TN</state>
<country>IN</country>
</CONTACT>


<CONTACTS>

Is it possible to generate a alpha-numeric ID during the creation of new contact in the xml file.
I used XSLT function <xsl:value-of select="generate-id(.)"/> to generate a unique ID in my xml file in the beginning for serializing so i used the above to generate ID.

I can add a new record in xml file using JavaScript DOM in XUL.

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");
 }
} 

The above code works perfectly to create a new record in my xml file.
How can i generate a unique ID during the creation of new contact in my XML file? rather than typing the ID manually in the textbox ?

XML File:

<?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>[email protected]</email>
<address></address>
<state>TN</state>
<country>IN</country>
</CONTACT>


<CONTACTS>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

十六岁半 2024-12-01 19:19:53

此 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>

This XSLT copies the input XML as is and populate all Customer-ID element with a unique 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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文