Javascript 使用xml2js节点js将xml解析为json时未定义的结果

Javascript 使用xml2js节点js将xml解析为json时未定义的结果,javascript,json,node.js,xml,xml2js,Javascript,Json,Node.js,Xml,Xml2js,我在使用将XML解析为JSON时遇到了一个问题。这是我的xml <Tables> <Table> <Id>TABLE1</Id> <Description>Test 1</Description> <FullName>TEST.CHEM.Customer</FullName> <Columns> <Column> <

我在使用将XML解析为JSON时遇到了一个问题。这是我的xml

<Tables>
<Table>
    <Id>TABLE1</Id>
    <Description>Test 1</Description>
    <FullName>TEST.CHEM.Customer</FullName>
    <Columns>
    <Column>
        <Id>1</Id>
        <Name>CustomerId</Name>
        <DataType>Number</DataType>
    </Column>
    <Column>
        <Id>2</Id>
        <Name>CustomerName</Name>
        <DataType>String</DataType>
    </Column>
    <Column>
        <Id>2</Id>
        <Name>ValidFrom</Name>
        <DataType>Date</DataType>
    </Column>
    </Columns>
</Table></Tables>

但是我得到了
tableId
的未定义结果。xml或函数有什么问题吗?

这是粗心大意,它总是未定义结果,因为
var tableId
是字符串格式,而不是JSON格式请参见,因此当xml已经由xml2js解析器解析时,它已经是JSON格式的。您可以通过基于上述xml文件的
result.Databases.Tables[0].Table[0].FullName
访问它。

您可以使用另一个软件包简单方便地更改所需的结果

例如:

const xml = '<Tables>
<Table>
    <Id>TABLE1</Id>
    <Description>Test 1</Description>
    <FullName>TEST.CHEM.Customer</FullName>
    <Columns>
    <Column>
        <Id>1</Id>
        <Name>CustomerId</Name>
        <DataType>Number</DataType>
    </Column>
    <Column>
        <Id>2</Id>
        <Name>CustomerName</Name>
        <DataType>String</DataType>
    </Column>
    <Column>
        <Id>2</Id>
        <Name>ValidFrom</Name>
        <DataType>Date</DataType>
    </Column>
    </Columns>
</Table></Tables>'

const temp = {
    table_id: 'Tables/Table/Id'
    columns: ['/Tables/Table/Columns/Column', {
        column_id: 'Id',
        name: 'Name'
    }]
}

const transform = require('camaro')
const results = transform(xml, temp)

console.log(JSON.stringify(results, null, 2))

这比我先前的回答更方便,是你制造了什么?顺便说一句,非常感谢@anh thang Bui我不是,制造商是我的朋友
const xml = '<Tables>
<Table>
    <Id>TABLE1</Id>
    <Description>Test 1</Description>
    <FullName>TEST.CHEM.Customer</FullName>
    <Columns>
    <Column>
        <Id>1</Id>
        <Name>CustomerId</Name>
        <DataType>Number</DataType>
    </Column>
    <Column>
        <Id>2</Id>
        <Name>CustomerName</Name>
        <DataType>String</DataType>
    </Column>
    <Column>
        <Id>2</Id>
        <Name>ValidFrom</Name>
        <DataType>Date</DataType>
    </Column>
    </Columns>
</Table></Tables>'

const temp = {
    table_id: 'Tables/Table/Id'
    columns: ['/Tables/Table/Columns/Column', {
        column_id: 'Id',
        name: 'Name'
    }]
}

const transform = require('camaro')
const results = transform(xml, temp)

console.log(JSON.stringify(results, null, 2))
{
    "columns": [
        {
        "column_id": "1",
        "name": "CustomerId"
        },
        {
        "column_id": "2",
        "name": "CustomerName"
        },
        {
        "column_id": "2",
        "name": "ValidFrom"
        }
    ],
    "table_id": "TABLE1"
}