2016-10-30 44 views
0

我正在嘗試編寫一些簡單的代碼來顯示2個XML文件的直接子元素的數量。這是迄今爲止我所提出的最好的代碼。嘗試計算XML文件中的DOM子元素的數量

<script> 
    var xmlDoc = loadXMLDoc("W6 XML and JS.xml");  
    x = xmlDoc.documentElement.childNodes; 
    for (i = 0; i < x.length; i++) { 

    } 
    document.write("There are " + i + " immediate child elements directly under the root element.<br />"); 
</script> 

因此,對於這些XML輸入我有這個。我試圖讓它顯示2個子元素,而不是所有元素。

<dataroot> 
 
    <Courses> 
 
    <Department>CIS</Department> 
 
    <CourseNumber>141</CourseNumber> 
 
    <Title>intro to access</Title> 
 
    <Description>db stuff</Description> 
 
    <Credits>5</Credits> 
 
    <Prerequisites>108, 123</Prerequisites> 
 
    <DateAdded>2011-07-01T00:00:00</DateAdded> 
 
    </Courses> 
 
    <Courses> 
 
    <Department>cap</Department> 
 
    <CourseNumber>102</CourseNumber> 
 
    <Title>Nutrition for the Food Service Professional</Title> 
 
    <Description>Nutrition for the Food Service Professional</Description> 
 
    <Credits>5</Credits> 
 
    <DateAdded>2001-01-01T00:00:00</DateAdded> 
 
    </Courses> 
 
</dataroot>

我知道有一個簡單的答案,我只是不能馬上找到它。任何幫助表示讚賞(這小白感謝你)

+0

你的意思是有n個課程在你的XML的數量,您只需要先2課程要素? – Sreekanth

+0

我認爲你是對的。我正在尋找根元素的直接元素。所以上面是2個課程,下面是7個來自根的孩子節點。 所以這個例子中,答案應該是7: '<?XML版本=」 1.0」 ?> CIS 141 介紹訪問 分貝東西 <先決條件> 108,123 2011-07-01T00:00:00 ' ,格式化爲Ba d,很抱歉。課程元素之間的元素是根元素的子元素。 –

+0

仍然太模糊。給定XML的輸出是什麼?您是否需要打印「根元素下直接有2個子元素?
」? – Sreekanth

回答

1

function getElementCount() { 
 
    var doc = `<Course> 
 
    <Department>CIS</Department> 
 
    <CourseNumber>141</CourseNumber> 
 
    <Title>intro to access</Title> 
 
    <Description>db stuff</Description> 
 
    <Credits>5</Credits> 
 
    <Prerequisites>108, 123</Prerequisites> 
 
    <DateAdded>2011-07-01T00:00:00</DateAdded> 
 
</Course>`; 
 
    var parser = new DOMParser(), 
 
    xmlDoc = parser.parseFromString(doc, "text/xml"), 
 
    elementCount = xmlDoc.documentElement.childElementCount; 
 

 
    console.log(`There are ${elementCount} immediate child elements directly under the root element.`); 
 
} 
 
getElementCount();

如果你正在尋找剛剛打印的文檔直接子元素計數,你只需要檢查的ChildElementCount如段提到的。

function getElementCount() { 
 
    var doc = `<dataroot> 
 
    <Courses> 
 
    <Department>CIS</Department> 
 
    <CourseNumber>141</CourseNumber> 
 
    <Title>intro to access</Title> 
 
    <Description>db stuff</Description> 
 
    <Credits>5</Credits> 
 
    <Prerequisites>108, 123</Prerequisites> 
 
    <DateAdded>2011-07-01T00:00:00</DateAdded> 
 
    </Courses> 
 
    <Courses> 
 
    <Department>cap</Department> 
 
    <CourseNumber>102</CourseNumber> 
 
    <Title>Nutrition for the Food Service Professional</Title> 
 
    <Description>Nutrition for the Food Service Professional</Description> 
 
    <Credits>5</Credits> 
 
    <DateAdded>2001-01-01T00:00:00</DateAdded> 
 
    </Courses> 
 
</dataroot>`; 
 
    var parser = new DOMParser(), 
 
    xmlDoc = parser.parseFromString(doc, "text/xml"), 
 
    elementCount = xmlDoc.documentElement.childElementCount; 
 

 
    console.log(`There are ${elementCount} immediate child elements directly under the root element.`); 
 
} 
 
getElementCount();

你可以在你的代碼做

var xmlDoc = loadXMLDoc("W6 XML and JS.xml"); 
 
x = xmlDoc.documentElement.childElementCount; 
 

 
document.write("There are " + x + " immediate child elements directly under the root element.<br />");

+0

我相信你的答案會工作,如果我使用的是jQuery,但是我正在使用Javascript,並且在嘗試編譯時仍然出現錯誤。儘管謝謝你的回覆。 –

+0

這裏沒有jQuery。它在純JS中。你介意分享這個錯誤嗎? – Sreekanth

+0

太近了。它適用於第一個文件。它顯示2,但它只告訴我一個這個文件。 ' CIS 141 介紹訪問 分貝東西 <先決條件> 108,123 2011- 07-01T00:00:00 ' –